Php 对等方在500秒后重置连接

Php 对等方在500秒后重置连接,php,cron,Php,Cron,我在made中运行导入cronjob时遇到了一个奇怪的问题。 它处理一个1.5GB的XML文件,其中包含大约400.000种产品。脚本工作正常,需要几个小时才能完成,但大约500/600秒后,我收到了来自cron deamon的以下电子邮件 PHP警告:文件\u获取\u内容(http://test.nl/admin/cron_index.php?route=module/EZImport&cron):无法打开流:HTTP请求失败!HTTP/1.1500内部服务器错误 在第8行的/home/tes

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

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

警告: 文件\u获取\u内容(http://test.nl/admin/cron_index.php?route=module/EZImport&cron): 无法打开流:HTTP请求失败!HTTP/1.1500内部 中的服务器错误 /home/test.nl/public_html/admin/controller/tool/EZImport_cron.php 第8行bool(错误)

我的apache错误日志显示:

[Fri Nov 02 09:43:39 2012][warn][client 176.9..174](104)对等方重置连接:mod_fcgid:从FastCGI服务器读取数据时出错 [Fri Nov 02 09:43:39 2012][error][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(); 需要一次_('../../config.php'); $opts=array('http'=> 阵列('超时'=>36000) ); $context=stream\u context\u create($opts); $url=HTTP_服务器。“cron_index.php?route=module/cronMod&cron”; $result=file\u get\u contents($url,false,$context); var_dump($结果); 模具(); 我需要通过文件获取内容来运行这个cron

环境:

DEBIAN, 敞篷车


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

尝试在脚本中使用
设置时间限制(0)
,或在php.ini中更改时间限制

处理1.5GB XML文件

呃,这有点傻-你至少需要两次通过才能验证文档的格式是否正确,还有很多坏事情可能发生

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

为了哪一个目的


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

Mod_fcgid(及其apache2模块等效物)确实不适合运行这种长寿命任务。虽然您指定您需要使用您的 FielyGETX内容> /代码>方法运行此CRON,但您确实应该考虑切换CRON作业来使用不受其他SAPI强加的时间限制的PHP CLI版本。我不通过HTTP传输XML文件,我以50mb的zip格式下载这个文件,该脚本由file_get_contents调用。此外,我还使用XMLReader,因此我不会将整个内容加载到RAM中。我将
set\u time\u limit(0)
添加到索引和通过file\u get调用的文件中,php.ini中的时间限制设置为30秒,因此在webmin中进行的设置推翻了这一点