我有一个脚本,可以将产品从CSV文件导入到网上商店。导入约有20,000个项目,因此整个过程可能需要30-60分钟。或更多时间。脚本可以由用户使用webbrowser或CRON作业手动启动。在这两种情况下,我都想使用相同版本的脚本。每周都会导入新项目(或更新的当前项目)。
我的问题是服务器在约5分钟后杀死脚本。工作
我设置:
ini_set('max_execution_time' ,0);
ini_set('set_memory_limit', -1)
我意识到我必须在一次运行中只导入一堆物品,例如500件物品。在每次运行结束时,我将保存导入到数据库的状态 - 例如。项目0-500已导入,因此下次脚本应导入500-1000。
我不知道该怎么做。导入一堆物品后我要做什么?也许我应该在GET中使用status参数重定向,如:
header('Location: http://www.example.com/importer/import.php?package=4');
exit;
这是实现这一目标的好方法吗?类似的东西会与cron一起使用吗?
答案 0 :(得分:1)
session_start();
// This function should take care of importing
// If $limit is null it should import whole csv file
function importProcess($offset, $limit = null) {
// some magic here
}
echo "Importing process in progress...";
// Script is called from command line
if (php_sapi_name() === 'cli') {
importProcess(0, null);
} else {
$num = 500;
$offset = isset($_SESSION['offset']) ? (int) $_SESSION['offset'] : 0;
if (importProcess($offset, $num)) {
$_SESSION['offset'] = $offset+$num;
header('Location: http://www.example.com/importer/import.php');
} else {
echo "Done";
}
}