我有一个奇怪的问题,我似乎无法找到解决方案或更接近我遇到的问题,
原文链接:https://www.f2er.com/php/136963.html这是事情,我有一个通过PHP在命令行上运行的scoket脚本,它接受连接并从移动应用程序客户端读取json格式的数据,并在json中发送适当的响应.
一切正常,但连接数不超过256连接.
我想知道为什么会这样,我该如何解决呢?我已经这么多天了,但没有运气!
这是脚本片段
<?PHP date_default_timezone_set("UTC"); $server = stream_socket_server("tcp://192.168.1.77:25003",$errno,$errorMessage); if (!$server) { die("$errstr ($errno)"); } echo "Server started.."; echo "\r\n"; $client_socks = array(); while (true) { //prepare readable sockets $read_socks = $client_socks; $read_socks[] = $server; //start reading and use a large timeout if (!stream_select ($read_socks,$write,$except,10000)) { die('something went wrong while selecting'); } //new client if (in_array($server,$read_socks)) { $new_client = stream_socket_accept($server); if ($new_client) { //print remote client information,ip and port number echo 'Connection accepted from ' . stream_socket_get_name($new_client,true); echo "\r\n"; $client_socks[] = $new_client; echo "Now there are total ". count($client_socks) . " clients"; echo "\r\n"; } // echo stream_socket_get_name($new_client,true); //delete the server socket from the read sockets unset($read_socks[array_search($server,$read_socks)]); } $data = ''; $res = ''; //message from existing client foreach($read_socks as $sock) { stream_set_timeout($sock,1000); while($resp = fread($sock,25000)) { $data .= $resp; if (strpos($data,"\n") !== false) { break; } } $info = stream_get_Meta_data($sock); if ($info['timed_out']) { unset($client_socks[array_search($sock,$client_socks)]); @fclose($sock); echo 'Connection timed out!'; continue; } $client = stream_socket_get_name($sock,true); if (!$data) { unset($client_socks[array_search($sock,$client_socks)]); @fclose($sock); echo "$client got disconnected"; echo "\r\n"; continue; } //send the message back to client $decode = json_decode($data); $encode = json_encode($res); fwrite($sock,$encode."\n"); } }
P.S.:我所做的是,广泛搜索这个主题,然后翻过这些文章,
http://smallvoid.com/article/winnt-tcpip-max-limit.html和其他两十几个人.
我有一个Windows 7运行这个东西wamp 2.5运行PHP 5.5.12