我有一个脚本通过http将文件上传到我的网络服务器,我需要的是服务器向http帖子发送响应,然后继续运行一些命令。
例如
文件通过http
发布服务器将文件插入数据库并将响应发送到http。
但我需要服务器在响应后继续运行并继续对文件进行一些编辑。
示例php
function uploadFile(){
$imageName = $tmpname . '.jpg';
move_uploaded_file ($_FILES["foto"]["tmp_name"], $targetDir . $imageName);
$data = Array('ALL THE DATABASE DATE')
$returnid = $this->uploader_model->addData($data);
//I NEED IT TO RETURN THIS TO THE AJAX HTTP REQUEST
echo json_encode(array(
'returned' => 'Successfully uploaded..',
'id' => $returnid
));
//I NOW NEED IT TO KEEP RUNNNG SOME EDITING ON THE IMAGE HERE IE..
shell_exec(" run some image editing here 2>&1");
}
我看到忽略用户中止,如
ignore_user_abort(1); // run script in background
set_time_limit(0); // run script forever
但这是否意味着脚本将永远运行并在服务器收到多个请求时崩溃?对于如何在此场景中正确使用此功能感到有点困惑
请帮助
答案 0 :(得分:0)
除非您制作脚本,否则您的脚本将无法永久运行,例如:通过使用无限循环。话虽如此,这不一定是一个好方法。
为了确保最佳的用户体验,您应该通过推迟任何耗时的任务来确保您的脚本快速执行。例如,您可以创建任务队列并使用cron运行排队任务。
或者,如果您决定使用问题中描述的解决方案,那么在文件成功上传后,最好使用AJAX 运行该解决方案。当用户导航离开网页时,AJAX请求可能会被终止,因此您仍需要确保服务器继续执行您的脚本。
顺便说一下,如果你真的想向客户发送一些东西,你也应该运行flush()。