【问题标题】:Execution time vs idle time in PHPPHP中的执行时间与空闲时间
【发布时间】:2011-01-07 02:22:54
【问题描述】:

这更像是一个理论问题。

当我运行一个对其他程序执行passthru 的 PHP 脚本时,比如一个 Java 应用程序,让我们假设程序运行了 30 分钟,然后优雅地结束,并且 PHP 每次都在循环中调用它。 .

... PHP 保持空闲等待 Java 的时间算作 execution time 还是算作空闲时间?

【问题讨论】:

  • 这不是很容易测试自己吗?将最大执行时间设置为 10 秒,然后调用 passthru 调用需要 30 秒才能运行的内容。如果脚本终止,答案是执行时间;如果没有,答案是空闲时间。
  • 顺便说一句 popen 更好。 passthru 喜欢永远缓冲输出,而且不会给你太多选择。
  • @Tomalak Geret'kal 这可能很容易测试,但这是个好问题。

标签: php execution-time passthru


【解决方案1】:

This manual page 似乎表明在 Windows 上该时间将计为执行时间,而在 Linux 上则不会。

【讨论】:

  • 经过几次测试和长时间运行 CLI php 程序的时间超过 12 小时,这应该是正确的。不过还没有在 Windows 上测试过。
【解决方案2】:

据我所知,PHP 会等待(空闲)输出,直到达到最大执行时间。然后进程将终止。

编辑:我错了。 PHP 将挂起,直到程序使用 passthru 函数关闭,无论执行时间如何。我错过了阅读文档。请参阅http://php.net/manual/en/function.passthru.php 上的注释

【讨论】:

  • @Colum:我还没有找到回答具体问题的参考资料,但我倾向于建议您的答案不正确。 “最大执行时间不受系统调用、流操作等影响。请参阅 set_time_limit() 函数了解更多详细信息。” -- php.net/manual/en/info.configuration.php#ini.max-execution-time
  • php.net/manual/en/function.set-time-limit.php 支持这一点,但有一个奇怪的附录评论暗示它在 Windows 上不是真的,没有进一步详细说明。 :(
  • 在笔记下(第 4 部分),2 一次向下。我引用:“如果一个程序使用这个函数启动,为了让它继续在后台运行,程序的输出必须重定向到一个文件或另一个输出流。如果不这样做会导致 PHP 挂起直到程序执行结束。”
  • @Colum 这会在 Linux 和 Windows 中发生吗?
  • @Colum:这并不是说 执行时间 没有提前。它只是表示对具有非重定向输出的程序的调用是同步执行的,PHP 过程执行将在调用完成之前不会继续。有关 execution time 属性的含义,请参阅我引用的手册页。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
  • 2018-12-13
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
相关资源
最近更新 更多