2017-09-20 40 views
0

我有一个JSON JSON文件就像值找出为什么fopen()过早结束?

{...} {...}... 

我可以通过[]包裹,并添加大括号之间的逗号将其转换为JSON,但是这不是问题。

我在文件中有大约40000个这样的对象,我需要导入到WordPress中。现在,使用wp_remote_get()是不可能的,因为该文件太大,我得到错误(用尽内存),所以我用fopen()。我有执行当我点击导入,并在其中,我有这样的代码AJAX功能:

$data = fopen('url-to-local-file', 'r'); 

while (! feof($data)) { 
    $json_line = fgets($data); 
    $json_array = json_decode($json_line, true); 

    // Import happens here 
} 

fclose($data); 

这工作,有点。大约12000个条目后,我收到消息,一切进口都很好。现在,应该导入的帖子数量大约为3000(具有不同元值的相同条目),但我只能获得大约900个导入。没有图像下载,只需从数组中获取数据并将其放在wp_insert_post()的帖子中,然后进行一些元数据更新。

有什么办法可以看到为什么6分钟后流停止?错误日志是空的。我看到一些使用trycatch的代码,但我不知道我应该把它放在哪里(以前从未使用它)。

+0

您是否尝试过'set_time_limit(0);'并确认您的主机没有为所有PHP进程设置6分钟的最大执行时间? –

+0

我在我的流浪者身上进行本地测试,在哪里设置时间限制?在文件的顶部或'while'循环中? –

+0

添加了答案。让我知道如果有帮助 –

回答

0

添加

set_time_limit(0);

到代码的顶部刚刚开幕PHP标签之后。

这将允许脚本无限期地运行并且不超时。

+0

添加它,但它仍然导入omly 900帖子没有错误 –