PHP CLI SAPIを使用して(単純な)サーバーソフトウェアを開発することは可能(そして実用的)ですか?サーバーが複数のリクエストを同時に処理できるように、PHPで(実際の)マルチスレッドの使用可能な方法はありますか?または、このようなプロジェクト(Pythonなど)に別のスクリプト言語をお勧めしますか?
2 に答える
はい、PHPでTCPまたはUDPサーバーを開発することは可能です。PHPのソケット関数のセットを見てください:PHP:Sockets-Manual
PHPにはマルチスレッド機能はありませんが、ノンブロッキングIO(を参照socket_set_nonblock()
)を使用して単純な並列処理を作成できます。socket_select()
「それは実行可能か」という質問に答えるには、プロジェクトの要件に関する詳細情報が必要です。「はい」の理由は次のとおりです。
- サーバーを既存のPHPクラス、モデルフレームワークに統合する必要があります
- サーバーを使用してPHPデータ構造を相互交換することを計画しています。
serialize()
( 、を使用して生成される場合がありますunserialize()
)
もちろん、あなたには追加の理由が見つかるかもしれません。
もう1つ注意しなければならないのは、Webサーバー環境(apache SAPIなど)では、既に並列TCPサーバー(Webサーバー)があることです。複数のリクエスト間の通信を実装する必要があります。その通信には、PHPのIPC機能、データベース、または少なくともファイルを使用できます。
PHP CLI SAPIを使用して(単純な)サーバーソフトウェアを開発することは可能(そして実用的)ですか?
すでに1つの組み込みがあります:http://php.net/manual/en/features.commandline.webserver.php
サーバーが複数のリクエストを同時に処理できるように、PHPで(実際の)マルチスレッドの使用可能な方法はありますか?
通常はPHPでこれを行うのではなく、http://php.net/manual/en/book.gearman.phpのような別のサービス(PHPで記述することもできます)に渡します。
または、このようなプロジェクト(Phytonなど)に別のスクリプト言語をお勧めしますか?
これはあなたのニーズに依存し、より多くの情報なしでは答えることができません。Python、Java、またはGolangがより良い代替手段になる可能性があります
注:PHPはマルチスレッド言語ですが、マルチスレッド機能をスクリプトのランタイムに公開していません。