我如何调用PHP程序的一部分以便以后调用
我有一个PHP程序,它是这样工作的 用户上传图像 图像处理 其他时间密集型函数称为 上传确认发送给用户。 问题是第2项和第3项占用了很多时间-我如何延迟异步运行这些进程 我想在上传图像后直接开始运行进程,但仍然要继续做其他事情,而不是等待 我知道cron,但我不想安排任务——我只是不想等待它完成 我有什么选择 编辑我如何调用PHP程序的一部分以便以后调用,php,asynchronous,Php,Asynchronous,我有一个PHP程序,它是这样工作的 用户上传图像 图像处理 其他时间密集型函数称为 上传确认发送给用户。 问题是第2项和第3项占用了很多时间-我如何延迟异步运行这些进程 我想在上传图像后直接开始运行进程,但仍然要继续做其他事情,而不是等待 我知道cron,但我不想安排任务——我只是不想等待它完成 我有什么选择 编辑 需要明确的是,此项目仅限于服务器端。没有javascript选项。为此需要使用ajax/jquery。上传图像后,请调用此。见打击 $.ajax({ url: 'proce
需要明确的是,此项目仅限于服务器端。没有javascript选项。为此需要使用ajax/jquery。上传图像后,请调用此。见打击
$.ajax({
url: 'process.php',
type: 'post',
success: function(data) {
//this is triggered when 2 and 3 is done.
}
});
首先,我建议您重新安排您的任务: 用户上传图像 上传确认发送给用户 图像处理 其他时间密集型函数称为 然后,您有以下选项,即如何定义零件3和4: 备选案文1: 在第2步向用户发送确认,使用忽略用户中止并继续处理图像非最佳,因为用户仍将看到页面加载消息 选项2:IBP样式。 执行步骤1-2,然后将处理作业添加到某种数据库中。随机向用户显示图像。。图像实际上是指向php脚本的链接,该脚本忽略用户中止并处理项目队列 备选案文3: 与选项2相同,但不显示图像。相反,您必须使用cURL或类似的方法来请求自己的服务器。其思想是启动请求,不要等待它结束,只需停止主脚本执行 选项4:启动cron脚本,每5-15分钟启动一次,并执行所需任务。它还可以在后台24小时工作,在检查任务之间睡眠20秒。这个选项可能是最好的情况下,你有相对繁忙的网站 选项5:将任务添加到队列后,尝试执行exec或shell_exec之类的操作来破坏后台处理脚本 如何执行选项2和3的示例:
如果需要,将代码一分为二,这样耗时的逻辑就在一个单独的脚本中,例如timeConsumer.php。然后,您可以使用创建一个子进程,并在其中执行timeConsumer.php 或者,您可以使用或其中任何一种。在Unix/Linux系统上,您可以在命令字符串的末尾添加&以使程序在后台执行
您可以将上传图像的名称作为命令行参数传递给timeConsumer.php,然后可以通过全局变量访问该参数。这是一个数组PHP并不是执行此任务的最佳工具。请将耗时的逻辑放在另一个脚本中,并在单独的进程中执行,也就是说,在涉及步骤1和步骤4的情况下,如何使用服务器端?作为cron运行的控制台脚本\may help@JvdBerg图像来自移动应用程序-后端是用php编写的现有系统此项目没有浏览器/客户端。只有服务器端如何才能只有步骤1和步骤4才是服务器端?图像来自移动应用程序-后端是用phpy编写的现有系统。您需要在步骤1中添加该脚本。它将在服务器端处理脚本process.php。如果3和4失败怎么办?已发送确认。步骤2说明图像已上载,未处理,因此我认为步骤3和步骤4失败没有问题:除此之外。。若实现了队列,那个么可以轻松地重新处理在下一个脚本实例中失败的映像。根据我的经验,选项4是最可靠的+1.谢谢