当我在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秒。
答案 0 :(得分:1)
处理1.5GB XML文件
Erk,这有点傻 - 你需要至少2次通过来验证文档是否格式正确,并且还有很多可能发生的坏事。
webmin(php config)中的最长执行时间设置为36000秒
为此结束?
您还需要为客户端和服务器之间的链中的Web服务器和其他所有组件配置超时,但尝试通过HTTP传输1.5Gb文件只是愚蠢 - 您可能会让它工作 - 但它不是解决问题的正确方法。将其分解为更易于管理的块。
答案 1 :(得分:0)
尝试在脚本中使用set_time_limit(0)
或更改php.ini