3 回答
TA贡献1871条经验 获得超8个赞
好吧,您可以使用“ ignore_user_abort(true)”
因此,脚本将继续起作用(注意脚本的持续时间,也许添加“ set_time_limit(0)”)
但是这里有个警告:您将无法通过以下两行停止脚本:
ignore_user_abort(true);
set_time_limit(0);
除非您可以直接访问服务器并在那里杀死进程!(在那里,进行了无休止的循环,一遍又一遍地调用自己,使服务器急停下来,大喊大叫……)
TA贡献1796条经验 获得超7个赞
在Windows下,这种过程有很多问题。我的处境略有不同,因为我不在乎“脚本”的响应-我希望脚本启动并允许其他页面请求在忙于工作时通过。
因为某些原因; 我遇到了问题,要么挂起其他请求,要么在大约60秒后超时(apache和php都设置为在大约20分钟后超时);事实证明,无论如何,Firefox都会在默认情况下5分钟后超时(默认情况下),因此在那之后,如果不更改Firefox中的设置,您将无法知道浏览器正在发生什么。
我最终使用进程打开和进程关闭方法在cli模式下打开php,如下所示:
pclose(popen("start php myscript.php", "r"));
这将(使用start)打开php进程,然后终止启动进程,使php运行所需的时间长-再次,您需要终止进程以手动将其关闭。它不需要您设置任何超时时间,您可以让调用它的当前页面继续并输出更多详细信息。
唯一的问题是,如果您需要发送脚本任何数据,则可以通过另一个源进行处理,也可以将其作为参数传递给“命令行”。这不是那么安全。
尽管可以很好地满足我们的需求,但可以确保脚本始终启动并可以不中断地运行。
TA贡献1877条经验 获得超6个赞
您可以使用另一个选项,运行脚本CLI ...它将在后台运行,如果需要,您甚至可以将其作为cronjob运行。
例如
> #!/usr/bin/php -q
<?php
//process logs
?>
可以将其设置为cronjob,并且将没有时间限制地执行....尽管此示例适用于基于UNIX的操作系统。
仅供参考,我有一个运行无限循环的php脚本,该脚本进行了一些处理,并且在过去3个月中一直在运行。
- 3 回答
- 0 关注
- 306 浏览
添加回答
举报