- 论坛徽章:
- 0
|
回复 bs
有两问?
一、 一个php的版webgame server 可不可以fork多个进程去监听同一个端口呢,如果 ...
lijianjunljj 发表于 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);
- }
复制代码 另外你可以试试php异步IO+消息列队+producer/consumer模型,至于可用性不敢保证,性能方面应该不会太差,之前是有PHP的web server的开源产品。 |
|