需要在后台执行代码

Need to execute a code in background

本文关键字:执行 代码 后台      更新时间:2023-09-26

我已经做了一个代码从iphone到PHP服务器接收图像,我需要调整这些图像的大小并移动到4个文件夹。

只有这样json响应才会给iphone。但是这很费时间。

要求:

  1. 我想移动一个文件到文件夹"folder1",然后想给json响应。

在给出json响应后,应该从这个"folder1"开始调整大小。

如何在后台运行这个调整大小的过程。

下面是我的代码: http://pastebin.com/qAcT1yi9

你可以通过Linux命令发送php脚本在后台运行。

的例子:

// using backticks to execute the Linux command but there are 
// other alternatives 
$cmd = `php runScriptInBackground.php &`;
echo $cmd;

首先发送/上传图像并发送响应,而不进行大小调整操作。

然后,如果上传成功,让浏览器发出另一个请求并进行大小调整。当此操作成功时,发送消息' resizing successful '返回。

这个问题的一个常见解决方案是在遇到特定事件时实现加载/处理消息。然后-仍然显示-操作将继续在后台加载,结果页面将在完成后最终显示。

虽然用户必须等待,但我更喜欢在实际结果未知时显示结果消息。不幸的是,我不确定如何在iphone开发中完成

如果你的建筑在objective c那么你可能只是调整大小复制和调整它的大小发送到你的PHP然后你可以显示一个旋转器和json结果返回给用户如果是一个错误,用户仍然会有调整大小的图像再次尝试…我的另一个想法是使用推送通知。我不知道代码是什么样子的但是可以考虑一下

你需要一些async javascript或iframe在你的页面张贴图像到你的服务器和提供反馈给用户。

这意味着"主"页不会改变,但可以向用户提供一些视觉信息。

你可以显示一个动画gif加载器或使用JS setInterval给用户的感觉,事情正在前进,为什么等待服务器的响应。

如果处理被分成更多的1部分,在每一步之后,服务器可以用HTML页面和重定向响应:这甚至可以在没有JS的IFRAME中工作。每个"页面"将执行多一个步骤。但是,如果用户在完成所有操作之前关闭浏览器,您将以未完成的任务结束。

数据库、真正的后台处理和客户端JS轮询是一个更健壮的选择。

一个完整的答案会很长,需要更多的细节,你的设置(apache CGI PHP?还是mod_php ?你是在使用MVC模型或框架,还是在写一个面向页面的网站?)

如果我必须写一个完整的答案,我会忘记PHP,使用Python和芹菜http://celeryproject.org/;-)

PS。

我刚发现一些相关的问题已经存在了:

    PHP后台进程在PHP中执行异步shell

您可以分两次完成,首先发送de文件并保存在第一个服务器上,之后当用户请求时,您生成必要的部分。

您将把费用从文件发送者传递给来自该文件的第一个请求。