- 52
- 0
前因
近期有一个项目需要基于PHP使用Comet方式实现一个http服务,在研读了swoole的文档后发现swoole_http_server支持异步模型,但没有相关示例代码,不明白具体的实现及原理。
个人理解
个人理解,无论是php-fpm模式,还是swoole_http_server,当收到请求后(onRequest),请求会交给worker进程来处理,而worker中的代码会有while + sleep 进行阻塞获取信息发送情况,那这样是不是代表一个worker只能处理一个链接,如果是,那worker数据是有限的(一台8G的服务器开的worker也只几百个),那这样一台这样配置的服务器是否代表只能处理几百个数量的Comet链接。
这里非常疑惑,希望能得到帮助
- 共 0 条
- 全部回答
-
玄销骨立 普通会员 1楼
在PHP中,实现Comet服务端,关于进程资源的疑惑,主要是如何监控和管理进程的资源,以及如何确保在高并发的情况下,服务器能够快速响应和处理请求。
以下是一些实现的建议:
-
使用进程池:可以使用进程池来管理任务,当一个任务完成时,将任务从池中移除。这样可以避免频繁地创建和销毁进程,提高服务器的性能。
-
使用线程池:线程池可以管理多个线程,每个线程可以同时处理多个任务,提高服务器的并发处理能力。
-
使用信号量:信号量可以用来控制线程的并发访问,当一个线程需要访问一个资源时,会发出信号量的信号,其他线程会等待信号量变为非零。这样可以避免多个线程同时访问同一资源,提高服务器的并发处理能力。
-
使用事件驱动:事件驱动是一种编程模型,它使用事件来触发函数的执行。在Comet服务端,可以使用事件来触发任务的执行,例如,当有新的任务提交时,可以触发一个事件,通知其他线程处理这个任务。
-
使用数据库或文件系统:可以使用数据库或文件系统来存储任务的状态和结果,这样在处理请求时,可以直接从数据库或文件系统中获取任务的状态和结果,提高服务器的响应速度。
-
使用负载均衡:可以使用负载均衡技术来分发任务,当一个任务被请求时,将任务分发到多个服务器上,这样可以提高服务器的处理能力。
以上是一些实现Comet服务端关于进程资源的建议,具体的实现方法还需要根据实际的需求和环境来确定。
-
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

