Workerman的个人总结和服务器搭建(Centos7)

workerman是命令行启动的

workerman本身已经是一个类似apache/nginx的容器,只要PHP环境OK workerman就可以运行。

长连接必须加心跳

长连接长时间不通讯肯定会被防火墙干掉而断开。

http://doc.workerman.net/faq/heartbeat.html(心跳说明)

客户端和服务端协议一定要对应才能通讯

不要尝试在浏览器地址栏访问websocket协议端口,不要尝试用webscoket协议访问裸tcp协议端口,协议一定要对应

连接失败可能的原因

刚开始使用workerman时很常见的一个问题是客户端连接服务端失败。 原因一般如下: 1、服务器防火墙(包括云服务器安全组)阻止了连接 (50%几率是这个) 2、客户端和服务端使用的协议不一致 (30%几率) 3、ip或者端口写错了 (15%的几率) 4、服务端没启动

不要使用exit die sleep语句

执行exit die语句会导致进程退出,并显示WORKER EXIT UNEXPECTED错误

如果需要返回,可以调用return。sleep语句会让进程睡眠,睡眠过程中不会执行任何业务,框架也会停止运行,会导致该进程的所有客户端请求都无法处理

改代码要重启

workerman是常驻内存的框架,改代码要重启workerman才能看到新代码的效果

支持TCP、UDP

WorkerMan支持TCP和UDP两种传输层协议,只需要更改一个属性便可以更换传输层协议,业务代码无需改动。

服务器安装

命令行运行(此步骤包含了安装php-cli主程序以及pcntl、posix、libevent库及git程序)

yum install php-cli php-process git gcc php-devel php-pear libevent-devel -y

安装event扩展,命令行运行,

event扩展要求PHP>=5.4,PHP5.3用户请安装libevent扩展

pecl install event

注意提示:Include libevent OpenSSL support [yes] : 时输入no回车,

注意提示:PHP Namespace for all Event classes :时输入yes,其它直接敲回车就行

命令行运行(此步骤是配置event扩展的ini配置,如果ini文件位置不对,可以通过运行php --ini找到实际加载的ini文件路径)

echo extension=event.so > /etc/php.d/30-event.ini

结束以上步骤之后,可进行拉取wokerman的代码,这边以Workerman源代码为例 

git clone https://github.com/walkor/Workerman

克隆完之后,cd到这个项目的位置,新建一个文件 ws_test.php(示例)

touch ws_test.php

然后编辑这个新建的文件

vim ws_test.php

粘贴一下代码:

<?php
use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';

// 注意:这里与上个例子不同,使用的是websocket协议
$ws_worker = new Worker("websocket://0.0.0.0:2000");

// 启动4个进程对外提供服务
$ws_worker->count = 4;

// 当收到客户端发来的数据后返回hello $data给客户端
$ws_worker->onMessage = function($connection, $data)
{
    // 向客户端发送hello $data
    $connection->send('hello ' . $data);
};

// 运行worker
Worker::runAll();

然后退出,执行命令 

php ws_test.php start

 出现以下画面表示成功!


如果执行php命令的时候无法出现以上的画面,那么请执行以下命令,之后在执行php运行的代码即可解决

composer install

刚开始接触workerman,觉得有用的,表个喜欢,欢迎指教! 

猜你喜欢

转载自blog.csdn.net/zhangzeshan/article/details/89188640
今日推荐