PHP socket初探---涙ながらにlibevent(三)
原文住所:https://t.ti-node.com/thread/...
この时间はみんなに比べても见て、私は离职して、1つは家で怠けて本当に手を出すのがおっくうで、2つはやっと时间を书きたいと思ってすべてデータの构造とアルゴリズムのところに落ちました.
今日は振り返って、ここの文章を続けます.その言葉はどう言いますか.
「自分が選んだ課題は、涙を浮かべても打ち切らなければならない!」(図文は関係なく、詳細はこちらをクリック).
実は前のlibeventの文章の中で(『PHP socket初探---硬着頭皮継続libevent(二)』)、もしあなたが総括能力が良いならば、私たちがlibeventを利用して少なくとも2つのことを試みたことを観察することができます:ミリ秒レベルタイマ 信号傍受ツール みんなコードphpなので、自分の言ったことを「サーバーを書いた」と言うのが好きです.そこで、今日の最初の例はlibeventを使って簡単なhttpサーバを構築することです.
コードをtestとして保存する.php、そしてphp.phpが動作します.もう1つの端末を開き、curlのGET方式でサーバーを要求します.効果は以下の通りです.
これは非常に簡単で簡単なhttp demoではありません.完全なhttpサーバにとって、彼はまだ完全なhttpプロトコルの実現、マルチコアCPUの利用などに欠けています.これらは、後に続く文章の中に置いて、細分化し始めます.
私たちがselectシステム呼び出しを使って乱暴なオンラインチャットルームを実現したことを覚えています.selectのようなアマチュアはチャットルームを混ぜる勇気があります.専門的なのは絶対に人を怒らせてはいけません.
无数の専门?????????????????libeventへ!
やれやれ、スタートコード:
コードをserverとして保存します.php、そしてphp server.phpを実行し、他の3つの端末を開いてtelnetを使用してチャットルームに接続し、実行効果は以下の通りです.
ダイナミックマップを置いてみて、いいかどうか見てみましょう.自分で作ったgifはとても大きくて、帯域幅が足りないことを知りません.
これまで、Libeventシリーズのほぼコア3本の斧を振り回しても、これらを終わらせると、これらのコードに出会ったとき、次のようにはならないはずです.
この时间はみんなに比べても见て、私は离职して、1つは家で怠けて本当に手を出すのがおっくうで、2つはやっと时间を书きたいと思ってすべてデータの构造とアルゴリズムのところに落ちました.
今日は振り返って、ここの文章を続けます.その言葉はどう言いますか.
「自分が選んだ課題は、涙を浮かべても打ち切らなければならない!」(図文は関係なく、詳細はこちらをクリック).
実は前のlibeventの文章の中で(『PHP socket初探---硬着頭皮継続libevent(二)』)、もしあなたが総括能力が良いならば、私たちがlibeventを利用して少なくとも2つのことを試みたことを観察することができます:
if( ( $connect_socket = socket_accept( $listen_socket ) ) != false){
echo " :".intval( $connect_socket ).PHP_EOL;
$msg = "HTTP/1.0 200 OK\r
Content-Length: 2\r
\r
Hi";
socket_write( $connect_socket, $msg, strlen( $msg ) );
socket_close( $connect_socket );
}
}, $listen_socket );
$event->add();
$event_base->loop();
コードをtestとして保存する.php、そしてphp.phpが動作します.もう1つの端末を開き、curlのGET方式でサーバーを要求します.効果は以下の通りです.
これは非常に簡単で簡単なhttp demoではありません.完全なhttpサーバにとって、彼はまだ完全なhttpプロトコルの実現、マルチコアCPUの利用などに欠けています.これらは、後に続く文章の中に置いて、細分化し始めます.
私たちがselectシステム呼び出しを使って乱暴なオンラインチャットルームを実現したことを覚えています.selectのようなアマチュアはチャットルームを混ぜる勇気があります.専門的なのは絶対に人を怒らせてはいけません.
无数の専门?????????????????libeventへ!
やれやれ、スタートコード:
$conn_item ){
if( $conn != $conn_item ){
$msg = intval( $conn ).' : '.$buffer;
socket_write( $conn_item, $msg, strlen( $msg ) );
}
}
}, $conn );
$event->add();
// , , , ,
$event_arr[ intval( $conn ) ] = $event;
}
}, $fd );
$event->add();
$event_base->loop();
コードをserverとして保存します.php、そしてphp server.phpを実行し、他の3つの端末を開いてtelnetを使用してチャットルームに接続し、実行効果は以下の通りです.
ダイナミックマップを置いてみて、いいかどうか見てみましょう.自分で作ったgifはとても大きくて、帯域幅が足りないことを知りません.
これまで、Libeventシリーズのほぼコア3本の斧を振り回しても、これらを終わらせると、これらのコードに出会ったとき、次のようにはならないはずです.