Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过脚本运行持久任务。如何避免500号错误?_Php_Cron - Fatal编程技术网

Php 通过脚本运行持久任务。如何避免500号错误?

Php 通过脚本运行持久任务。如何避免500号错误?,php,cron,Php,Cron,我有一个脚本,将产品从CSV文件导入到网上商店。大约有20000件物品需要进口,因此整个过程可能需要30-60分钟或更长时间。脚本可以由用户使用webbrowser或CRON作业手动启动。在这两种情况下,我都希望使用相同版本的脚本。每周导入新项目(或更新的当前项目) 我的问题是服务器在大约5分钟的工作后终止了脚本 我设定: ini_set('max_execution_time' ,0); ini_set('set_memory_limit', -1) 我意识到我必须在一次运行中

我有一个脚本,将产品从CSV文件导入到网上商店。大约有20000件物品需要进口,因此整个过程可能需要30-60分钟或更长时间。脚本可以由用户使用webbrowser或CRON作业手动启动。在这两种情况下,我都希望使用相同版本的脚本。每周导入新项目(或更新的当前项目)

我的问题是服务器在大约5分钟的工作后终止了脚本

我设定:

ini_set('max_execution_time' ,0);       
ini_set('set_memory_limit', -1)
我意识到我必须在一次运行中只导入一组项目,例如500个项目。在每次运行结束时,我将保存导入数据库的状态-例如,项目0-500已导入,所以下次脚本应导入500-1000

我不知道该怎么做。导入一堆项目后我要做什么?也许我应该在GET-like中使用status参数进行重定向:

header('Location: http://www.example.com/importer/import.php?package=4');
exit;
这是实现这一目标的好方法吗?类似的东西对cron有用吗?

session_start();
//此函数应负责导入
//如果$limit为null,则应导入整个csv文件
函数importProcess($offset,$limit=null){
//这里有些魔力
}
回显“正在导入过程…”;
//从命令行调用脚本
如果(php_sapi_name()=='cli'){
importProcess(0,空);
}否则{
$num=500;
$offset=isset($_会话['offset'])?(int)$_会话['offset']:0;
if(导入过程($offset,$num)){
$\会话['offset']=$offset+$num;
标题('位置:http://www.example.com/importer/import.php');
}否则{
回应“完成”;
}
}
会话启动();
//此函数应负责导入
//如果$limit为null,则应导入整个csv文件
函数importProcess($offset,$limit=null){
//这里有些魔力
}
回显“正在导入过程…”;
//从命令行调用脚本
如果(php_sapi_name()=='cli'){
importProcess(0,空);
}否则{
$num=500;
$offset=isset($_会话['offset'])?(int)$_会话['offset']:0;
if(导入过程($offset,$num)){
$\会话['offset']=$offset+$num;
标题('位置:http://www.example.com/importer/import.php');
}否则{
回应“完成”;
}
}

您的意思是,当CRON调用脚本时,长时间运行没有问题吗?是的,如果从CLI调用脚本,长时间运行应该不会有问题。这很愚蠢。我实现了这一点,得到了504超时错误。你的意思是当CRON调用脚本时,长时间运行没有问题吗?是的,如果从CLI调用脚本,长时间运行应该不会有问题。这很愚蠢。我实现了这个,得到了504超时错误。