我有一个AJAX脚本需要大约10分钟才能完成它。我希望能够告诉用户'嘿听,任务正在完成,我们会让你知道结果如何',但它不会让用户在服务器上运行任何其他脚本,直到那个完成(我相信这是PHP单线程的结果,但我不确定)。有没有办法将AJAX脚本分配给单独的PHP或Apache进程,以便用户可以继续在应用程序中单击而无需等待任务完成?
答案 0 :(得分:3)
您可以使用数据库或文件插入一些锁定机制,以防止任务同时运行多次。然后你需要使用命令nohup
生成PHP进程(没有挂断),有关详细信息,请查看以下文章:https://nsaunders.wordpress.com/2007/01/12/running-a-background-process-in-php/或此问题:nohup: run PHP process in background。
答案 1 :(得分:0)
我寻求了几个小时,至少,使用 Cron Jobs ,我很容易找到解决方案。在 cPanel 中,您可以转到高级 - > Cron Jobs,并在那里使用命令行中的PHP脚本安排任务。
执行脚本php的命令示例:
/usr/bin/wget http://www.example.com/miscript.php
或更好:
php /home/USER/public_html/miscript.php