【问题标题】:Close window STOP php script?关闭窗口停止 php 脚本?
【发布时间】:2013-01-08 21:37:53
【问题描述】:

我一直在尝试寻找这个,但不幸的是我找不到答案。 我正在计算我服务器上巨大矩阵的大量 Pearson 相关性。我通过打开 example.org/testscript.php 来做到这一点。

脚本本身将在启动后大约 2 天终止,并将执行许多 INSERT INTO 数据库以用于推荐目的。

我想知道当我关闭浏览器窗口时,PHP 脚本是否会停止。我假设不是;但是我不是 100% 确定。

附:我注意到,在某些计算机上的某些浏览器中,大约 10 分钟后启动脚本时,我会收到内部服务器错误 (500)。然而,脚本本身仍在运行,因为它仍在我的数据库中插入行。

但是在这台电脑上我没有收到这样的错误,因此我想知道当我关闭标签时会发生什么。

【问题讨论】:

  • 2 天?浏览器?在从 cli 调用的后台执行此操作
  • 很遗憾,我的托管服务提供商不允许此类选项。
  • PHP 通常有一个最大执行时间,通常设置在 30 秒左右(并非总是如此,但在大多数构建中这是默认设置)。如果您没有更改默认 PHP 值,您的脚本应该在 max_execution_time 用完后自动停止?
  • 感谢您的回复。但是,我将最大执行时间设置为 0,这意味着无穷大。我是故意这样做的。
  • 令我惊讶的是,任何非专用主机都允许任何东西运行这么长时间。我非常怀疑这是否符合他们的条款,即使他们目前没有阻止你,你应该期待他们在未来的某个时候

标签: php window


【解决方案1】:

php 脚本将在超时后终止。您可以更改超时时间:http://php.net/manual/en/function.set-time-limit.php

但是,如果您没有产生任何输出,浏览器将很快超时。浏览器超时当然是特定于浏览器的。

正如 Dagon 所建议的,正确的方法是在后台在服务器上执行 php 脚本。

【讨论】:

  • 我希望关于超时的部分是真的,但事实并非如此。 set_time_limit() 和匹配的配置指令 max_execution_time 测量 CPU 时间,而不是经过的时间,因此不能用于此。更令人困惑的是,如果您在 Windows 上运行 PHP,set_time_limit() 的工作方式会有所不同,并且会测量实际经过的时间,所以会起作用!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
  • 1970-01-01
  • 1970-01-01
  • 2017-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多