2

PHPデーモンのアイデアはここで完全にカバーされていますが、PHP5.3でこれを行う方法に特に関連するものは何も見つかりませんでした。私が聞いたように、5.3は新しいガベージコレクション/メモリ管理を導入して、PHPをデーモンとしてよりクリーンに実行できるようにしました。

私はPHPがこの種のことに対して誰もが最初に選択するものではないことを知っていますが、私の状況ではそうしなければならないかもしれません。

PHP 4では、 System_Daemonクラスのようなものを使用する必要があることはわかっていますが、新しいバージョンのPHPでもそれが必要かどうか、そして新しい機能を使用するために何か特別なことをする必要があるかどうか疑問に思いました。

4

2 に答える 2

3

PHPは、割り当てられたメモリを管理するために参照カウントを使用します。オブジェクト間にサイクルが存在する場合、それらの参照カウントがデクリメントされることはなく、オブジェクトが解放されることもありません(スクリプトが終了するまで)。

PHP5.3で追加されたガベージコレクターの唯一の目標は、これらのサイクルを強制終了することです。これは、デーモンなどの長時間実行されるスクリプトのメモリ使用量を効果的に削減するのに役立ちます。

それ以外は、PHP5.3は長時間実行されるスクリプト/デーモンに新しいものを追加しません。

最近、PHPでアプリサーバーを作成するためのいくつかの取り組みが行われています。それらを確認することをお勧めします。

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

代わりに使用するスレッドサポートがないため、デーモンプロセスをフォークすることになっています。そして、これは暗黙的にメモリの解放を処理するので、実際には問題ではありません。

于 2011-08-30T18:08:19.600 に答える