- 論壇徽章:
- 0
|
回復(fù) bs
有兩問?
一、 一個php的版webgame server 可不可以fork多個進程去監(jiān)聽同一個端口呢,如果 ...
lijianjunljj 發(fā)表于 2011-11-22 23:54 ![]()
可以fork多個進程
- <?php
- $socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr);
- if (!$socket)
- throw new Exception("$errstr ($errno)<br />\n");
- // 生成子進程
- $pid = pcntl_fork();
- if ($pid == -1) {
- die('could not fork');
- } else if ($pid) {
- loop($socket , 1);
- pcntl_wait($status);
- } else {
- loop($socket , 2);
- }
- function loop($socket , $id) {
- while ($conn = stream_socket_accept($socket)) {
- /*
- $data = '';
- while(($c=fgetc($read_sock))!==false && $c!="\0" && $c!="\n" && $c!="\r"){
- $data .= $c;
- }*/
- fwrite($conn, "Server ID : $id , hello!\n");
- fclose($conn);
- }
- fclose($socket);
- }
復(fù)制代碼 另外你可以試試php異步IO+消息列隊+producer/consumer模型,至于可用性不敢保證,性能方面應(yīng)該不會太差,之前是有PHP的web server的開源產(chǎn)品。 |
|