免费的个人网站html代码,怎么上传网站图片的链接,大专学电子商务有用吗,免费网页模版下载workerman_connection 测试WebStock 功能Description整理PHP 实现webstock 功能的相关流程。感谢workerman 开发作者提供开源组件。安装 composer# curl -sS https://getcomposer.org/installer | php如果安装 composer 提示PHP 版本不够按照如下处理#xff0c;否则跳过。提示…workerman_connection 测试WebStock 功能Description整理PHP 实现webstock 功能的相关流程。感谢workerman 开发作者提供开源组件。安装 composer# curl -sS https://getcomposer.org/installer | php如果安装 composer 提示PHP 版本不够按照如下处理否则跳过。提示版本不够现在是5.3.3 只好准备升级到5.6先进行卸载旧版本。# yum list installed | grep php# yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-fpm.x86_64 php-gd.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 php-mysql.x86_64 php-pdo.x86_64 php-xml.x86_64 删掉显示出来的所有组件接下来安装PHP5.6# rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm 升级一下yum 工具# yum clean all 清除# yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-fpm.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64 php56w-xml.x86_64验证安装版本# php -v (显示 5.6.35)# /etc/init.d/php-fpm restart 重新启动安装WebStock 所需要的组件安装前检查很重要# curl -Ss http://www.workerman.net/check.php|php 检查缺啥PHP Version 5.3.3 [OK]Extension pcntl check [OK]Extension posix check [fail] (缺啥补啥)补充缺少的部分# yum install php56w-process 安装缺少的 posix# mv composer.phar /usr/local/bin/composer 让命令全局调用# cd (切换到项目目录)安装workerman# composer require workerman/workerman安装gateway-worker# composer require workerman/gateway-worker代码测试下载本项目的文件这里假设你防止的目录是网站根目录下 ws 文件夹中。配置配置 ws/start_businessworker.php BusinessWorker类其实也是基于基础的Worker开发的。BusinessWorker是运行业务逻辑的进程BusinessWorker收到Gateway转发来的事件及请求时会默认调用Events.php中的onConnect、onMessage、onClose方法处理事件及数据开发者正是通过实现这些回调控制业务及流程。$worker-name 是你的工作进程名称随便起名即可别重名$worker-registerAddress 是webstock 服务器的地址目标指向你的webstock 服务器这个在分布式处理需要注意这里都在一台主机上测试所以IP为127.0.0.1其他不用改不要动保存退出举例use \Workerman\Worker;use \Workerman\WebServer;use \GatewayWorker\Gateway;use \GatewayWorker\BusinessWorker;use \Workerman\Autoloader;// bussinessWorker 进程$worker new BusinessWorker();// worker名称$worker-name YourAppBusinessWorker;// bussinessWorker进程数量$worker-count 4;// 服务注册地址$worker-registerAddress 127.0.0.1:2346;// 如果不是在根目录启动则运行runAll方法if(!defined(GLOBAL_START)) {Worker::runAll();}配置 ws/start_gateway.php Gateway类用于初始化Gateway进程。Gateway进程是暴露给客户端的让其连接的进程。所有客户端的请求都是由Gateway接收然后分发给BusinessWorker处理$gateway-name$gateway-count$gateway-lanIp$gateway-startPort$gateway-registerAddress$gateway-pingInterval$gateway-pingData直接看注释吧。use \Workerman\Worker;use \Workerman\WebServer;use \GatewayWorker\Gateway;use \GatewayWorker\BusinessWorker;use \Workerman\Autoloader;// gateway 进程这里使用Text协议可以用telnet测试$gateway new Gateway(websocket://0.0.0.0:2345);// gateway名称status方便查看$gateway-name YourAppGateway;// gateway进程数$gateway-count 4;// 本机ip分布式部署时使用内网ip$gateway-lanIp 127.0.0.1;// 内部通讯起始端口假如$gateway-count4起始端口为4000// 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口$gateway-startPort 2900;// 服务注册地址$gateway-registerAddress 127.0.0.1:2346;// 心跳间隔$gateway-pingInterval 20;// 心跳数据$gateway-pingData {type:ping};配置 ws/start_register.php Register类其实也是基于基础的Worker开发的。Gateway进程和BusinessWorker进程启动后分别向Register进程注册自己的通讯地址Gateway进程和BusinessWorker通过Register进程得到通讯地址后就可以建立起连接并通讯了。要修改的只有text 协议地址这里面要和use \Workerman\Worker;use \GatewayWorker\Register;// register 服务必须是text协议$register new Register(text://0.0.0.0:2346);// 如果不是在根目录启动则运行runAll方法if(!defined(GLOBAL_START)) {Worker::runAll();}逻辑工作原理1.Register、Gateway、BusinessWorker进程启动2.Gateway、BusinessWorker进程启动后向Register服务进程发起长连接注册自己3.Register服务收到Gateway的注册后把所有Gateway的通讯地址保存在内存中4.Register服务收到BusinessWorker的注册后把内存中所有的Gateway的通讯地址发给BusinessWorker5.BusinessWorker进程得到所有的Gateway内部通讯地址后尝试连接Gateway6.如果运行过程中有新的Gateway服务注册到Register(一般是分布式部署加机器)则将新的Gateway内部通讯地址列表将广播给所有BusinessWorkerBusinessWorker收到后建立连接7.如果有Gateway下线则Register服务会收到通知会将对应的内部通讯地址删除然后广播新的内部通讯地址列表给所有BusinessWorkerBusinessWorker不再连接下线的Gateway8.至此Gateway与BusinessWorker通过Register已经建立起长连接9.客户端的事件及数据全部由Gateway转发给BusinessWorker处理BusinessWorker默认调用Events.php中的onConnect onMessage onClose处理业务逻辑。10.BusinessWorker的业务逻辑入口全部在Events.php中包括onWorkerStart进程启动事件(进程事件)、onConnect连接事件(客户端事件)、onMessage消息事件(客户端事件)、onClose连接关闭事件(客户端事件)、onWorkerStop进程退出事件(进程事件)执行测试进入服务器的ws 目录下php start.php start 这会启动所有服务启动后截图控制台截图里面会生成一个假的OPEN-ID 这个OPEN-ID 用来沟通这个用户的客户端“OPENID_1539063500148”查看客户端控制台看到消息表示测试成功。特别说明send_message.php 中的代码实际上放到任何框架下都可以执行这个完美的进行了解耦操作。