1

PHPがTCPポートを介してサーバーとして機能できるかどうか疑問に思っていましたか?1GBのRAMサーバーはいくつのIDLE接続を処理できますか?PHPは1つのTCPポートへの多くの接続を受信できますか(apacheがポート80で行うように)

PHPで開いたソケットに接続されたクライアントがある場合、どのようにデータを送信できますか?(たとえば、a.phpはポート5000でリッスンしており、一部のクライアントが接続されています。後でb.phpはそのクライアントに何かを送信する必要がありますが、メッセージをプッシュしますか?)

または、代わりにUDPを使用しますか?

4

1 に答える 1

3

友人、私の最初のアドバイスは、たとえPHPがこれをネイティブに実行できるとしてもです。PHPは、TCPソケットサーバーを実装するための最良のテクノロジーではありません。その理由は、phpにはスクリプトごとにmax_execution_timeがあり、サーバーを永久に実行するには、この値を0に設定する必要があるためです。これは永久を意味します。1GBのRAMサーバーが処理できる接続の量は、各phpプロセスを消費するRAMとプロセッサの量によって異なります。

しかしとにかく、phpを使用してそれを行うことにした場合。はい、phpを使用して非同期tcpソケットサーバーを構築できます。

5000をリッスンするマスターソケットを作成するだけです(たとえば)。そして、このマスターソケットに接続するクライアントソケットごとに、着信接続ごとにランダムな空きポート(OSによって選択)を持つ子ソケットを作成します。マスターを解放しながら子ソケットとの通信を開始して、別の着信をリッスンし続けることができます。接続。

于 2012-09-26T16:33:33.157 に答える