php服务端开启socket,php socket服务端能不能在网页端开启?而不是只能用CLI模式开启...
发布日期:2021-06-24 10:22:48 浏览次数:4 分类:技术文章

本文共 1209 字,大约阅读时间需要 4 分钟。

最近在做基于php socket的聊天程序,但是遇到了个问题:

开启ws端口只能在CMD下用php server.php的方式来开启端口,并不能关闭该CMD命令行窗口,一旦关闭就断开了socket连接。

请问,能不能做到不用这样的方式来开启ws服务端,而成为在网页端来开启?怎么做?

回复讨论(解决方案)

可以从网站上开启,但需要注意以下问题:

1、因为端口不能重复打开,所以你必须保证 server.php 只会被运行一次

2、web 方式下的 php 是超时设置有效的,当然你需要设置成永不超时

3、web 服务器是有超时限制的,虽然时间比较长。应用程序长时间无数据输出,将会被挂起或中断

4、如果 server.php 间歇的做标准输出的话,可以解决 3 的问题。但会引发下一个问题

5、php 在向标准输出写的时候,会检查到请求源的连接是否畅通。如果请求源被关闭了,就会终止程序的运行

当然也提供有阻止这一默认行为的方法

其实命令窗口的存在并不是什么坏事,至少他可以表示 ws 服务器正在工作

另外 ws 服务器在运行时,你应该要把重要的日志信息打印在窗口中,以便实时监视运行情况

可以从网站上开启,但需要注意以下问题:

1、因为端口不能重复打开,所以你必须保证 server.php 只会被运行一次

2、web 方式下的 php 是超时设置有效的,当然你需要设置成永不超时

3、web 服务器是有超时限制的,虽然时间比较长。应用程序长时间无数据输出,将会被挂起或中断

4、如果 server.php 间歇的做标准输出的话,可以解决 3 的问题。但会引发下一个问题

5、php 在向标准输出写的时候,会检查到请求源的连接是否畅通。如果请求源被关闭了,就会终止程序的运行

当然也提供有阻止这一默认行为的方法

其实命令窗口的存在并不是什么坏事,至少他可以表示 ws 服务器正在工作

另外 ws 服务器在运行时,你应该要把重要的日志信息打印在窗口中,以便实时监视运行情况

非常感谢分析并回答!

因为在win下,CMD窗口一直在运行,并且不能关闭,一旦关闭将会停止运行socket服务,而这个窗口在桌面上显示人总会有种想关闭的冲动,或者一不小心就会关闭。所以才想出这样的狠招!

根据你的方法,设置了超时限制后,在网页端直接开启ws服务,在xampp的netstat中查看,创建的进程中,多出了个12345端口(设置的ws端口),而后面显示的name为httpd.exe,说明是由httpd.exe创建的,而前面php server.php在命令行下面创建的进程,则是由php.exe创建的,不知道这样有没有什么弊端?

没有什么弊端,尤其是在调试环境中

如果是正式的服务,那么在服务器桌面上多一个命令窗口有什么关系?谁也不会在服务器上做日常工作的

好的,再次感谢

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

转载地址:https://blog.csdn.net/weixin_32058931/article/details/115960145 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:php不需要也能输出,php 如何只输出最后生成的那个值??
下一篇:laravel没有route.php,Laravel中的RouteCollection.php中的NotFoundHttpException

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月17日 10时50分45秒