【问题标题】:PHP Daemon in PHP 5.3PHP 5.3 中的 PHP 守护进程
【发布时间】:2011-11-07 00:55:46
【问题描述】:

虽然 PHP 守护程序的想法在这里已经被彻底掩盖,但我还没有找到任何与如何在 PHP 5.3 中执行此操作特别相关的内容。有人告诉我,5.3 引入了新的垃圾收集/内存管理,以允许 PHP 作为守护程序更干净地运行。

我知道 PHP 不是这类事情的首选,但在我的情况下可能不得不这样做。

我知道在 PHP 4 中,你必须使用类似 System_Daemon 类的东西,但我想知道新版本的 PHP 是否仍然需要它,我是否需要做一些特别的事情才能使用新功能。

【问题讨论】:

  • 查看 node.js 中的守护进程。这类东西好多了,而且它是 javascript,所以应该不难接受。
  • @dqhendricks 有趣的选项,谢谢,我会调查一下

标签: php unix daemons


【解决方案1】:

PHP 使用引用计数来管理分配的内存。当对象之间存在循环时,它们的引用计数永远不会减少,并且永远不会释放对象(直到脚本结束)。

在 PHP5.3 中添加的垃圾收集器的唯一目标是终止这些循环。这有效地有助于减少长时间运行的脚本(如守护程序)的内存使用量。

除此之外,PHP5.3 没有为长时间运行的脚本/守护进程添加任何新内容。

最近有一些用PHP制作应用服务器的努力,你可能想看看它们:

https://github.com/indeyets/appserver-in-php

【讨论】:

    【解决方案2】:

    垃圾收集器是一个内部的东西。它不会改变您编写守护程序的方式。在 PHP 5.3 之前只有一种效率更低的垃圾收集(资源释放)形式,仅此而已。 http://php.net/manual/en/features.gc.performance-considerations.php

    你应该仍然 fork 守护进程,因为没有线程支持来代替使用。这隐含地负责释放内存,因此实​​际上并不重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      • 2010-10-19
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      相关资源
      最近更新 更多