如何在用户点击其他链接之前确保PHP中的函数完成?

问题描述 投票:0回答:1

我正在创建一个在线评委。我正在使用IDEONE API来编译该文件。因此,当我的用户上传文件时,有一个函数可以获取文件并使用IDEONE API编译文件。但问题是在编译文件时,如果我的用户点击一个新链接,编译仍然是半完成的。有没有办法确保函数在用户重定向之前完全执行?

我的第一个想法是创建一个线程并让线程进行编译。当线程运行时,我可以向用户显示一个新视图。但显然你不能在PHP中运行一个线程,所以我没有想法。

php function
1个回答
1
投票

在PHP中,实际上没有办法确保用户在某些内容完成时停留在页面上。

您最好的选择是将编译作业传递给后台进程。一种方法是使用您要处理的信息在数据库中插入一行。您可以立即向用户显示一条消息,说明他们的作业已被放入队列中,并且很快就会得到处理。然后设置Cron从数据库中获取信息,并向您的API发出请求。完成后,再次更新数据库以指示作业已完成。如果这是一个特别长时间运行的过程,您可以通过电子邮件向用户表明他们的工作已经完成,这样他们就不必等待。

总体而言,您的目标是为用户提供有关正在发生的事情的良好反馈,同时不会以导航用户可能丢失的方式运行您的流程。

© www.soinside.com 2019 - 2024. All rights reserved.