500秒后由对等体重置连接

时间:2012-11-02 09:15:32

标签: php cron

当我在make中运行导入cronjob时,我遇到了这个奇怪的问题。 它处理包含大约400,000个产品的1.5GB XML文件。该脚本工作正常,需要几个小时才能完成,但在大约500/600秒后,我从cron-deamon收到以下电子邮件。

  

PHP警告:file_get_contents(http://test.nl/admin/cron_index.php?route=module/EZImport&cron):无法打开流:HTTP请求失败! HTTP / 1.1 500内部服务器错误    在第8行的/home/test.nl/public_html/admin/controller/tool/EZImport_cron.php

     

警告:   的file_get_contents(http://test.nl/admin/cron_index.php?route=module/EZImport&cron):   无法打开流:HTTP请求失败! HTTP / 1.1 500内部   服务器错误   /home/test.nl/public_html/admin/controller/tool/EZImport_cron.php   第8行布尔(假)

我的apache错误日志说:

  

[2012年11月2日星期五09:43:39] [警告] [客户端176.9..174](104)通过对等方重置连接:mod_fcgid:从FastCGI服务器读取数据时出错   [Fri Nov 02 09:43:39 2012] [错误] [client 176.9..174]脚本标题的提前结束:cron_index.php

这是cronjob调用的cron文件


    require_once('../../config.php');
    $opts = array('http' =>
        array('timeout' => 36000)
    );
    $context  = stream_context_create($opts);
    $url = HTTP_SERVER."cron_index.php?route=module/cronMod&cron";
    $result = file_get_contents($url, false, $context);
    var_dump($result);
    die();

我需要通过file_get_contents

运行此cron

环境:

DEBIAN, Opencart的

webmin(php config)中的最长执行时间设置为36000秒。

2 个答案:

答案 0 :(得分:1)

  

处理1.5GB XML文件

Erk,这有点傻 - 你需要至少2次通过来验证文档是否格式正确,并且还有很多可能发生的坏事。

  

webmin(php config)中的最长执行时间设置为36000秒

为此结束?

您还需要为客户端和服务器之间的链中的Web服务器和其他所有组件配置超时,但尝试通过HTTP传输1.5Gb文件只是愚蠢 - 您可能会让它工作 - 但它不是解决问题的正确方法。将其分解为更易于管理的块。

答案 1 :(得分:0)

尝试在脚本中使用set_time_limit(0)或更改php.ini

中的时间限制