找出fopen()过早结束的原因?

时间:2017-09-20 14:22:19

标签: php json wordpress fopen

我有JSON文件,其中包含类似值的JSON

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

我可以通过将其包装在[]中并在花括号之间添加逗号来将其转换为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的代码,但我不确定我应该把它放在哪里(以前从未使用过它)。

1 个答案:

答案 0 :(得分:0)

添加

set_time_limit(0);

在打开PHP标记之后的代码顶部。

这将允许脚本无限期运行而不会超时。