workerman开发者必须知道的几个问题
发布时间 - 2019-11-26 00:00:00 点击率:次下面由workerman教程栏目给大家介绍关于workerman开发者必须知道的几个问题,希望对需要的朋友有所帮助!
1、workerman不依赖apache或者nginx
workerman本身已经是一个类似apache/nginx的容器,只要PHP环境OK workerman就可以运行。
2、workerman是命令行启动的
启动方式类似apache使用命令启动(一般网页空间无法使用workerman)。启动界面类似下面
3、长连接必须加心跳
长连接必须加心跳,长连接必须加心跳,长连接必须加心跳,重要的话说三遍。
长连接长时间不通讯肯定会被防火墙干掉而断开。不加心跳的长连接应用就等着老板KO你吧。
4、客户端和服务端协议一定要对应才能通讯
这个是开发者非常常见的问题。例如客户端是用websocket协议,服务端必须也是websocket协议(服务端new Worker('websocket://0.0.0.0...'))才能连得上,才能通讯。
不要尝试在浏览器地址栏访问websocket协议端口,不要尝试用webscoket协议访问裸tcp协议端口,协议一定要对应。
这里的原理类似如果你要和英国人交流,那么要使用英语。如果要和日本人交流,那么要使用日语。这里的语言就类似与通许协议,双方(客户端和服务端)必须使用相
同的语言才能交流,否则无法通讯。
5、连接失败可能的原因
刚开始使用workerman时很常见的一个问题是客户端连接服务端失败。 原因一般如下:
1、服务器防火墙(包括云服务器安全组)阻止了连接 (50%几率是这个)
2、客户端和服务端使用的协议不一致 (30%几率)
3、ip或者端口写错了 (15%的几率)
4、服务端没启动
6、不要使用exit die sleep语句
业务执行exit die语句会导致进程退出,并显示WORKER EXIT UNEXPECTED错误。当然,进程退出了会立刻重启一个新的进程继续服务。如果需要返回,可以调用return。sleep语句会让进程睡眠,睡眠过程中不会执行任何业务,框架也会停止运行,会导致该进程的所有客户端请求都无法处理。
7、业务代码里不要有死循环
业务代码里不要有死循环,否则会导致控制权无法交还给workerman框架,导致无法接收处理其它客户端消息。
8、改代码要重启
workerman是常驻内存的框架,改代码要重启workerman才能看到新代码的效果。
9、长连接应用建议用GatewayWorker框架
很多开发者使用workerman是要开发长连接应用,例如即时通讯、物联网等,长连接应用建议直接使用GatewayWorker框架,它专门在workerman的基础上再次封装,做起长连接应用后台更简单、更易用。
10、支持更高并发
如果业务并发连接数超过1000同时在线,请务必优化linux内核,并安装event扩展或者libevent扩展。
更多workerman使用教程请关注workerman教程栏目。
# workerman
# php
# nginx
# 封装
# die
# 循环
# Event
# 并发
# apache
# websocket
# 物联网
# linux
# 云服务器
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在腾讯云服务器快速搭建个人网站?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
javascript基于原型链的继承及call和apply函数用法分析
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
*服务器网站为何频现安全漏洞?
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
微信小程序 canvas开发实例及注意事项
如何在Windows 2008云服务器安全搭建网站?
网站建设整体流程解析,建站其实很容易!
如何在建站之星绑定自定义域名?
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
Laravel如何保护应用免受CSRF攻击?(原理和示例)
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
如何快速搭建高效服务器建站系统?
如何用花生壳三步快速搭建专属网站?
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
Python并发异常传播_错误处理解析【教程】
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
Java垃圾回收器的方法和原理总结
Laravel如何创建自定义Artisan命令?(代码示例)
Laravel如何生成API文档?(Swagger/OpenAPI教程)
如何在云服务器上快速搭建个人网站?
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
浅谈redis在项目中的应用
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
如何基于云服务器快速搭建个人网站?
Laravel如何与Pusher实现实时通信?(WebSocket示例)
Mybatis 中的insertOrUpdate操作
大学网站设计制作软件有哪些,如何将网站制作成自己app?
php 三元运算符实例详细介绍
JavaScript如何操作视频_媒体API怎么控制播放
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
如何快速查询网址的建站时间与历史轨迹?
jQuery validate插件功能与用法详解
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
Laravel如何使用Blade组件和插槽?(Component代码示例)
如何在万网开始建站?分步指南解析
如何快速生成橙子建站落地页链接?
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
WEB开发之注册页面验证码倒计时代码的实现
网页设计与网站制作内容,怎样注册网站?
如何基于PHP生成高效IDC网络公司建站源码?
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程

