最近在做基于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中文网

php设置对ws的请求不拦截,phpsocket服务端能不能在网页端开启?而不是只能用CLI模式开启...相关推荐

  1. js请求结果拦截机器_CefSharp请求资源拦截及自定义处理

    前言 在CefSharp中,我们不仅可以使用Chromium浏览器内核,还可以通过Cef暴露出来的各种Handler来实现我们自己的资源请求处理. 什么是资源请求呢?简单来说,就是前端页面在加载的过程 ...

  2. Axios的Vue插件(添加全局请求/响应拦截器)

    /**  * @file Axios的Vue插件(添加全局请求/响应拦截器)  */ // https://github.com/mzabriskie/axios import axios from ...

  3. cefsharp irequesthandler_CefSharp请求资源拦截及自定义处理

    前言 在CefSharp中,我们不仅可以使用Chromium浏览器内核,还可以通过Cef暴露出来的各种Handler来实现我们自己的资源请求处理. 什么是资源请求呢?简单来说,就是前端页面在加载的过程 ...

  4. SpringBoot2.1.5 (22)--- SpringBoot设置支持跨域请求

    SpringBoot2.1.5 (22)--- SpringBoot设置支持跨域请求 现代浏览器处于安全的考虑,在http/https请求时必须遵守同源策略,否则即使跨域的http/https 请求, ...

  5. SpringBoot 整合JWT实现基于自定义注解的-登录请求验证拦截(保姆级教学,附:源码)

    学习目标: Spring Boot 整合JWT实现基于自定义注解的 登录请求接口拦截 例: 一篇掌握 JWT 入门知识  1.1 在学习SpringBoot 整合JWT之前,我们先来说说JWT进行用户 ...

  6. 记录本次遇到的并发请求登录拦截问题

    请求并发,多个请求队列等待登录完成执行 @Ariel 小程序项目开发遇到静默登录需求 用户进入小程序即自动登录,场景是在请求拦截中校验登录状态,如果没有即登录并使所有请求进入等待状态,在登录请求完成后 ...

  7. uc浏览器请求被拦截报跨域踩坑记录

    记录下开发时uc浏览器请求被拦截时遇到的问题 请求在uc浏览器出现跨域问题 app使用uniapp开发,使用plus.runtime.launchApplication来打开并跳转指定页面,并在Xco ...

  8. 【Angular中的HTTP请求】- 拦截器 HttpInterceptor 详解

    通过学习 HttpClient 的工作机制 ,我们知道对于HTTP请求,HttpClient 实际上是构建了一个链式的处理流程: 在HttpBackend的处理流程中请求被发出.在HttpBacken ...

  9. python 大量网络请求失败_网络请求异常拦截优化

    public class ExceptionUtils { /* * 在使用Retrofit+RxJava时,我们访问接口,获取数据的流程一般是这样的:订阅->访问接口->解析数据-> ...

最新文章

  1. 每日一皮:当我修复一个隐藏Bug时,陷入了死循环中....
  2. python 从url中提取域名和path
  3. iOS:Tools:快速注释Doxygen
  4. 机器学习笔记:(时间序列中的线性回归)如何选择预测变量
  5. 基于OWL-S的Web服务质量本体的描述模式的设计(转)
  6. 经典C语言程序100例之三二
  7. python数据科学讲解_数据科学的概念-Python数据科学技术详解与商业项目实战精讲 - Python学习网...
  8. pyside2 镜像安装_pyside2 镜像安装_【PySide2学习笔记】0_下载安装
  9. Cannot resolve table 't_daily'
  10. python中属性与方法_python中属性和方法的动态绑定
  11. setspan字体加粗_Android 图文混排富文本编辑器实现详解
  12. python项目方案书-前端python解释器方案预研
  13. 正则表达式,js表单验证
  14. sql server2000远程访问
  15. Iphone连接Openwrt的IPSEC服务器
  16. 友元函数实现复数加减法
  17. Dell戴尔笔记本电脑G15 5515 Ryzen Edition原装出厂Windows11系统恢复原厂oem系统
  18. 浪潮服务器安装windows2008系统,浪潮NF5280M3安装Windows Server 2008 R2注意事项
  19. 【Tiva_C系列】二、TM4C123GH6PM 微控制器
  20. 计算机图形学的应用虚拟现实相关,虚拟现实技术中计算机图形学的应用——三维计算机图形...

热门文章

  1. 【MODIS数据处理#14】拼接、投影、裁剪一键完成,比MRT更方便的ArcGIS脚本工具(含代码)
  2. 《心安即是归处》读书笔记
  3. ROOT学习——展示如何组合各种Candle图选项的示例(candlehisto.C)
  4. HTC G13解锁与越狱成功(转)以及刷机
  5. 本科双非,收割互联网大厂10+offer!!!
  6. 下载VOT2013-2020数据集方法
  7. 基于Java毕业设计一起组局校园交友平台源码+系统+mysql+lw文档+部署软件
  8. oracle数据库定义游标,Oracle游标声明
  9. 电工必备实用口诀 ③
  10. 强化学习(二):Policy Gradient理解