PHP后台进程

我正在尝试制作一个PHP脚本,我已经完成了脚本,但是大约要花10分钟才能完成它打算完成的过程。这不是问题,但是我想我必须一直保持页面加载,这很烦人。我可以使用它来启动该过程,然后在10分钟后再回来查看它生成的日志文件吗?



慕娘9325324
浏览 307回答 3
3回答

ITMISS

好吧,您可以使用“ ignore_user_abort(true)”因此,脚本将继续起作用(注意脚本的持续时间,也许添加“ set_time_limit(0)”)但是这里有个警告:您将无法通过以下两行停止脚本:ignore_user_abort(true); set_time_limit(0);除非您可以直接访问服务器并在那里杀死进程!(在那里,进行了无休止的循环,一遍又一遍地调用自己,使服务器急停下来,大喊大叫……)

芜湖不芜

在Windows下,这种过程有很多问题。我的处境略有不同,因为我不在乎“脚本”的响应-我希望脚本启动并允许其他页面请求在忙于工作时通过。因为某些原因; 我遇到了问题,要么挂起其他请求,要么在大约60秒后超时(apache和php都设置为在大约20分钟后超时);事实证明,无论如何,Firefox都会在默认情况下5分钟后超时(默认情况下),因此在那之后,如果不更改Firefox中的设置,您将无法知道浏览器正在发生什么。我最终使用进程打开和进程关闭方法在cli模式下打开php,如下所示:pclose(popen("start php myscript.php", "r"));这将(使用start)打开php进程,然后终止启动进程,使php运行所需的时间长-再次,您需要终止进程以手动将其关闭。它不需要您设置任何超时时间,您可以让调用它的当前页面继续并输出更多详细信息。唯一的问题是,如果您需要发送脚本任何数据,则可以通过另一个源进行处理,也可以将其作为参数传递给“命令行”。这不是那么安全。尽管可以很好地满足我们的需求,但可以确保脚本始终启动并可以不中断地运行。

慕哥9229398

您可以使用另一个选项,运行脚本CLI ...它将在后台运行,如果需要,您甚至可以将其作为cronjob运行。例如> #!/usr/bin/php -q<?php//process logs?>可以将其设置为cronjob,并且将没有时间限制地执行....尽管此示例适用于基于UNIX的操作系统。仅供参考,我有一个运行无限循环的php脚本,该脚本进行了一些处理,并且在过去3个月中一直在运行。
打开App,查看更多内容
随时随地看视频慕课网APP