Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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
通过ajax发送响应,但继续使用php脚本_Php_Ajax - Fatal编程技术网

通过ajax发送响应,但继续使用php脚本

通过ajax发送响应,但继续使用php脚本,php,ajax,Php,Ajax,我有一个脚本,可以通过http将文件上传到我的Web服务器,我需要的是服务器向http post发送响应,然后继续运行一些命令 比如说 文件通过http发布 服务器保存文件,将数据插入数据库并向http发送响应 但是我需要服务器在响应之后继续运行,并继续对文件进行一些编辑 php示例 function uploadFile(){ $imageName = $tmpname . '.jpg'; move_uploaded_file ($_FILES["foto"]["tm

我有一个脚本,可以通过http将文件上传到我的Web服务器,我需要的是服务器向http post发送响应,然后继续运行一些命令

比如说

文件通过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
但这是否意味着脚本将永远运行,并在收到多个请求时使服务器崩溃?在这个场景中如何正确使用这个函数有点困惑


请提供任何帮助

除非使用无限循环,否则脚本不会永远运行。话虽如此,这不一定是一个好办法

为了确保最佳的用户体验,您应该通过延迟任何耗时的任务来确保脚本快速执行。例如,您可以创建一个任务队列,并使用cron运行排队的任务

或者,如果您确实决定使用您在问题中描述的解决方案,那么在成功上传文件后,最好使用AJAX运行该解决方案。AJAX请求可能会在用户离开网页时终止,因此您仍然需要确保服务器继续执行您的脚本


顺便说一句,如果您真的想向客户端发送内容,您也应该运行flush。

为什么不在echo之前执行此操作?这只是一个示例脚本,用于用户体验,他们只需要一个图像开始,然后进行响应,然后其他图像可以在需要之前在后台进行编辑。这将节省用户等待响应的至少1分钟时间响应,这样需要20秒我以前从未做过类似的事情,因为web基础设施为您提供了基于信号的连接。你送东西,你收到东西。我不确定,但可能值得一看。