您好,欢迎访问一九零五行业门户网

PHP客户端socket连接EXE服务端的相关问题

php运行环境:windows server 2012 r2 vl (aliyun - qingdao) + php5.4.44 + mysql 5.6 + iis8.5 + url rewrite 2.0 + fastcgi
服务端exe运行环境:windows server 2012 r2 vl (aliyun - qingdao) + e语言 5.3
function send($in){ try{ $socket = socket_create(af_inet, sock_stream, sol_tcp); socket_set_option($socket, sol_socket, so_rcvtimeo, array(sec => 5, usec => 0)); socket_set_option($socket, sol_socket, so_sndtimeo, array(sec => 180, usec => 0)); $result = socket_connect($socket, '127.0.0.1', 9999); $out = ; socket_write($socket, $in, strlen($in)); $out = socket_read($socket, 10240); socket_close($socket); return $out; }catch(exception $e){ exit (); }}
这是我的代码,正常使用,之前没加trycatch语句,就会导致,如果一个访问者打开这个页面,另一个访问者同时也打开了这个页面,那第二个用户就会报500服务器错误,经过一些大神帖子发现是因为链接服务器失败导致的,可是我的服务端exe不限制连接数,而且第一个能连接第二个怎么就不能了呢?难道一个php-cgi.exe进程在同时只能发起一个socket连接吗?
补充:第一个用户打开网页已发起socket 但未处理完毕 未关闭连接,第二个用户就访问该页并创建socket,则第二个用户连接失败报错。
所有的错误都是提示在socket_connect语句的所在行。
回复讨论(解决方案) 你作为服务端的程序是如何启动的?
既然你已经有了异常处理,那就不应该隐藏掉异常信息
出错时也应给出错误信息
这样判断错误原因才能有依据,你说对吧?
你echo下你的异常信息,或者使用socket_strerror(socket_last_error($socket))输出下socket产生的错误
服务器端的程序是exe 啊 当然就直接双击啊,我没有做成系统服务。。。php返回的异常信息就是unexpected error on socket_connect at line 5。连接失败,都unexpected了。。。socket_strerror(socket_last_error($socket))应该放在哪?
你作为服务端的程序是如何启动的?
既然你已经有了异常处理,那就不应该隐藏掉异常信息
出错时也应给出错误信息
这样判断错误原因才能有依据,你说对吧?
服务器端的程序是exe直接双击启动的 没有写系统服务项。另外我之前没做异常处理,这是后来加的,无视就好。 function send($in){ $socket = socket_create(af_inet, sock_stream, sol_tcp); socket_set_option($socket, sol_socket, so_rcvtimeo, array(sec => 5, usec => 0)); socket_set_option($socket, sol_socket, so_sndtimeo, array(sec => 180, usec => 0)); $result = socket_connect($socket, '127.0.0.1', 9999); $out = ; socket_write($socket, $in, strlen($in)); $out = socket_read($socket, 10240); socket_close($socket); return $out;}
你echo下你的异常信息,或者使用socket_strerror(socket_last_error($socket))输出下socket产生的错误
php返回的异常信息就是unexpected error on socket_connect at line 5
你echo下你的异常信息,或者使用socket_strerror(socket_last_error($socket))输出下socket产生的错误
php返回的异常信息就是unexpected error on socket_connect at line 5
if ($result == false) echo socket_strerror(socket_last_error($socket));


if ($result == false) echo socket_strerror(socket_last_error($socket));


恩不用了,已经解决了。谢谢。
if ($result == false) echo socket_strerror(socket_last_error($socket));


恩不用了,已经解决了。谢谢。 分享下经验,大家学习下
其它类似信息

推荐信息