[Linuxのマルチプロセスプログラムモニターネットワークポート

SO_REUSEPORTは、同じポートにバインドする複数のプロセスまたはスレッドをサポート

各プロセスは、独自のソケットを作成し、バインド、聞いて、同じアドレスとポートを受け入れることができ、それぞれが独立したと同じです。同じマルチプロセスモニタポートを聞かせて、各プロセスはaccept socket fd、新たな接続が確立され、カーネルがプロセスに目を覚ますでしょうがあり、異なっているaccept、とバランスの取れた性的な目覚めを確保

<?PHPの
 $コンテキスト = stream_context_create ();
stream_context_set_option$文脈、 'ソケット'、 'SO_REUSEPORT'、1 );
$ iは = 0; $ I <2; $ I ++ ){
     $ PID = pcntl_fork()。
    もし$ PID == 0 ){
         ながら、){
             $ソケット = stream_socket_server( "TCP://0.0.0.0:8000"、$ errnoに$ errstrは、STREAM_SERVER_BIND | STREAM_SERVER_LISTEN、$コンテキスト);
            一方、$ CONN = @ stream_socket_accept$ソケット、5 )){
                 関数fwrite$ CONNgetmypid。。() ':时间:' 日付( 'はYmd H:I:S') "\ n" );
                fcloseを$ CONN )。
            } 
            FCLOSE$ソケット)。
        } 
        
    } 
} 

ながら(1 ){
     $ PID = pcntl_wait($状態)。
    var_dump$ pidを$状態);
    睡眠(1 )。
}

 

おすすめ

転載: www.cnblogs.com/taoshihan/p/12014162.html