2011-02-04 6 views
1

プロダクションサーバでpcntl libを使用するのはなぜお勧めですか? PHPマニュアルでは、そのことについて非常に簡単に説明しています。私はこのライブラリを使う必要があります。 PHPで同じことをする別の方法はありますか?なぜprod-servでpcntlライブラリをPHPで使用するのがお勧めですか?

+0

最初に推測しますか? Web上で提供されるスクリプトは、UNIXプロセスへのアクセスを可能にします。かなり安全ではないように思えます。 – Stephen

+0

あなたは何を使用する必要があるかについて少し詳しく説明できますか? POSIX信号は本質的に「悪い考え」ではありませんが、実際には実装に依存します。 –

+0

さて、それは最適化のためです - 私は本当に大量のデータを処理する必要があり、これを同期させると膨大な時間がかかります。 – marek

答えて

3

pcntlは、サポートする機能(フォーク、プロセスコントロール、シグナルハンドリング)がCGIスタイルのアプリケーションではではなく、であるべきであるため、本番環境では使用しないでください。今、あなたはPHPでデーモンまたはコマンドラインアプリケーションを書いている場合、それは別の問題です...

PHP manualから:

プロセス制御はWebサーバ環境内で有効と予期しないべきではありませんWebサーバー環境内でプロセス制御機能が使用されていると、結果が出る可能性があります。

+0

これは、prod-servでpcntlを使用すると予想される予期せぬ不思議な結果が何であるか説明していません。 – marek

+1

クラップス、私はpcntlを使うために、CGIとしてPHPをコンパイルする必要があることを発見しました。 – marek

+1

@marek:pcntlはWebサーバーソフトウェアによって解釈されるスクリプトで使われるはずなので、唯一のcliで。 pcntlは並行処理を実装するための適切なツールではありません。 – glasz

1

php cliスクリプトとsapi/cgiスクリプトの違いについてはっきりしている必要があります。プロダクションシステム上のPHPもpcntlをサポートしている可能性があります。

ここで重要なのは、2つのPHP設定ファイルを持つことです。 1つはcli用で、もう1つはcgiセットアップ用です。 実際のセキュリティ上の問題は、ウェブサーバーによって実行されたときにスクリプトをフォークすると、ゾンビプロセスがシステムに溢れてしまう可能性があるため、CGIセットアップでpctnlを無効にする必要があります。

cli環境では、フォークするスクリプトを書くことが必要な場合があります。

+0

@エドワードZ.ヤン:それは私が言ったことです。 PHPマニュアルは、特に、Webサーバーソフトウェアによって実行されるスクリプトをフォークする危険性を指します。 – glasz

関連する問題