2

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

我知道 PHP 不是这种事情的首选,但在我的情况下它可能必须这样做。

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

4

2 回答 2

3

PHP uses reference counting for managing allocated memory. When a cycle exists between objects, their reference count is never decremented and the objects are never freed (until the end of the script).

The only goal of the garbage collector added in PHP5.3 is to kill those cycles. This effectively helps in reducing the memory usage of long running scripts, like daemons.

Other than that, PHP5.3 adds nothing new for long running scripts / daemons.

There has been some efforts in making app servers in PHP lately, you may want to look at them:

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

于 2011-08-30T18:06:19.790 回答
1

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

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

于 2011-08-30T18:08:19.600 回答