【问题标题】:PHP script continues after closing / stopping pagePHP脚本在关闭/停止页面后继续
【发布时间】:2013-10-02 21:58:55
【问题描述】:

似乎 php 脚本即使在关闭或停止页面后仍在继续。

例如,如果我的脚本由 /localhost/test.php

关闭页面后,有时它会继续运行。我很确定重新启动 apache 会清除它,但有没有更好的方法在启动 php 脚本后终止它。

【问题讨论】:

  • 您可以使用die();exit(); 来终止任何函数
  • 是的。但我正在客户端寻找一些东西来停止脚本。
  • 嗯...一个(GET)链接到一个带有出口的函数怎么样?想到的一切。

标签: php exit


【解决方案1】:

您可以使用ignore_user_abort,但我认为它仅适用于您将 PHP 作为命令行脚本运行。

当从浏览器运行脚本时,根据我的经验,我意识到即使在浏览器关闭后脚本也会运行。我没有进一步检查他们过去运行了多长时间。

执行大量处理的脚本可以运行几分钟,我曾经控制如下:

  • 考虑一个存储在数据库表中的标志变量。
  • 提供了一种设置标志OnOff(或10)的方法。
  • 在脚本中检查标志,如果发现标志为Off(或0),则脚本停止运行。

考虑标志的一种方法是如下循环:

while(true)
{
    /* Your code here which probably does lot of processing */

    if($flag === false) break; // Or exit if you prefer
}

如果您有代码需要在循环之后运行,您可以使用 break
如果您想突然停止脚本,您可以使用 exit 代替它。

【讨论】:

  • 啊!这非常好。也许有点不雅,但肯定解决了我的问题。谢谢。
  • 没问题。我有以分钟为单位运行的 PHP 脚本,这些脚本最初是从浏览器测试的,后来被设置为 cron 作业。出于我的目的,我发现它是控制此类脚本的最佳方式。很高兴您发现我的回答很有帮助。干杯...
【解决方案2】:

看看这个:http://php.net/manual/en/function.ignore-user-abort.php

设置客户端断开连接是否应导致脚本中止。

【讨论】:

  • 默认设置为 false(不忽略 user_aborts)。但它仍在运行。
猜你喜欢
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2014-01-27
相关资源
最近更新 更多