欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php怎么同时处理多个任务(关于php socket)

程序员文章站 2022-06-13 23:48:36
...
php如何同时处理多个任务(关于php socket)
我现在要写一个socket监听一个端口,如果有数据过来,开始while循环,现在问题出来了,同时只能有一个客户端连接这个服务端,有第二个连接时,就连接不上,有的朋友说就accept了一次,但是应该如何修改呢?下面贴上我的代码,请会的朋友指导下(说详细点,最好可以帮我修改下代码)



PHP code
$commonProtocol = getprotobyname("tcp");$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);@socket_bind($socket, '192.168.1.202', 8888);@socket_listen($socket);// Initialize the buffer$buffer = "NO DATA";while(true){sleep(1);     // Accept any connections coming in on this socket $connection = @socket_accept($socket); printf("Socket connected\r\n"); // Check to see if there is anything in the buffer if($buffer != "") {  printf("Something is in the buffer...sending data...\r\n");  @socket_write($connection, $buffer . "\r\n");  printf("Wrote to socket\r\n"); } else {  printf("No Data in the buffer\r\n"); } // Get the input while($data = @socket_read($connection, 14, PHP_NORMAL_READ)) {          if (!empty($data)){         $buffer = $data;   //文件驱动模式       /*$f = fopen(dirname(__FILE__).'/file/'.date('YmdHis').'.txt','w');    fwrite($f,$buffer);     fclose($f); */     socket_set_nonblock($connection);   socket_getpeername($connection,&$remoteIP,&$remotePort);echo $remoteIP."\r\n";echo $remotePort."\r\n";    $data=str_split($buffer);  print_r($data);  foreach($data as $v){     echo dechex(ord($v))."\t";     } echo "\r\n";      }     } @socket_close($connection); printf("Closed the socket\r\n\r\n");  }


------解决方案--------------------
非阻塞模式
php怎么同时处理多个任务(关于php  socket)

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频