Workerman学习之路

来源:互联网 发布:三国群英传2 mac版本 编辑:程序博客网 时间:2024/06/03 14:47

Workerman学习之路

一、环境检测

Linux系统可以使用以下脚本测试本机PHP环境是否满足WorkerMan运行要求。curl -Ss http://www.workerman.net/check.php | php

上面脚本如果全部显示ok,则代表满足WorkerMan要求,直接到官网下载例子即可运行。

注意:

检测脚本中没有检测event扩展或者libevent扩展,如果业务并发连接数大于1024建议安装event扩展或者libevent扩展。

一般首次运行可能出错:


解决方案:

安装运行Workerman必要的PHP扩展。

如果php是通过yum安装的,则命令行运行 yum install php-process即可安装pcntl和posix扩展。

如果安装失败或者php本身不是用yum安装的,参考下面安装扩展:

1.找到PHP解压路径

find / -name php-*

2.进入php扩展pcntl目录

cd /root/php-7.0.12/ext/pcntl/

3.执行命令

/usr/local/php/bin/phpize

结果:


./configure --with-php-config=/usr/local/php/bin/php-config

结果:


make && make install

结果:


vi /etc/php.ini

添加一行内容:

extension=pcntl.so

添加完成后保存退出。

4.再次测试

curl -Ss http://www.workerman.net/check.php | php

结果:


表明PHP环境已经支持Workerman工作需要。

如需安装posix扩展,跟安装pcntl步骤相同即可。
注意:如果出现错误提示:
Warning: PHP Startup: Invalid library (maybe not a PHP library) 'posix.so' in Unknown on line 0PHP Warning:  PHP Startup: Invalid library (maybe not a PHP library) 'posix.so' in Unknown on line 0
或者,如下错误:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-zts-20151012/mcrypt.so' - /usr/local/php/lib/php/extensions/no-debug-zts-20151012/mcrypt.so: undefined symbol: _tsrm_ls_cache in Unknown on line 0PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-zts-20151012/json.so' - /usr/local/php/lib/php/extensions/no-debug-zts-20151012/json.so: undefined symbol: _tsrm_ls_cache in Unknown on line 0PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-zts-20151012/phar.so' - /usr/local/php/lib/php/extensions/no-debug-zts-20151012/phar.so: undefined symbol: _tsrm_ls_cache in Unknown on line 0
在相应扩展目录下(如:/root/php-7.0.12/ext/posix/)执行 make clean 后重新按上述步骤安装扩展即可解决。

二、安装

安装环境:

linux:CentOS7.2

php:7.0.12

mysql:5.7.17

apache:2.4

下载linux版本的Workerman

三、使用

1.  安装扩展包

使用linux之前需要安装event或者libevent

yum install event* -y

yum install libevent -y

2.  安装php扩展

根据官方Workerman开发实例(https://www.kancloud.cn/walkor/workerman/315113)进行测试,php http_test.php start 启动的时候提示错误:


这就说明pcntl扩展没有安装,参考第一步安装即可。
继续执行php http_test.php start
结果:

说明HTTP协议对外提供Web服务测试用例成功。
测试用例:使用HTTP协议对外提供Web服务
创建http_test.php文件(位置任意,能引用到Workerman/Autoloader.php即可)
<?phpuse Workerman\Worker;require_once __DIR__ . '/Workerman/Autoloader.php';// 创建一个Worker监听2345端口,使用http协议通讯$http_worker = new Worker("http://0.0.0.0:2345");// 启动4个进程对外提供服务$http_worker->count = 4;// 接收到浏览器发送的数据时回复hello world给浏览器$http_worker->onMessage = function($connection, $data){    // 向浏览器发送hello world    $connection->send('hello world');};// 运行workerWorker::runAll();
命令行运行(windows用户用 cmd命令行)
php /usr/local/apache/htdocs/Workerman-master/http_test.php start
(文件路径根据文件位置确定)
连接测试:
在浏览器输入http://ip:2345
出现“hello world”说明成功。
注意,可能出现错误以及解决方案:
1.一般在阿里云ECS服务器上使用Workerman搭建环境,测试的时候都会出现在浏览器ip:端口号访问不了显示

ERR_CONNECTION_TIMED_OUT 的情况,这是由于ECS服务器的安全组没有设置相应的端口允许规则,设置好你想要使用的端口规则后就可以,设置方法参考我的博客http://blog.csdn.net/dmt742055597/article/details/77063853

这个问题解决后,如果启动了Workerman进程,就会有相应的消息内容显示在浏览器
2.ERR_CONNECTION_REFUSED
执行进程启动命令,即可解决:
php /usr/local/apache/htdocs/Workerman-master/http_test.php start


************************************只要思想不滑坡,办法总比困难多************************************



原创粉丝点击