workermanDay01 安装、Worker类

workerman 开源异步PHP socket 即时通讯框架

文档:http://doc3.workerman.net/315128

0x00 Workman安装

安装 libevent(php<7) 或者 Event 扩展(php >=7)

step1 不论php版本,都要安装 libevent 扩展:

yum install libevent-devel -y

step2 php > 7 就安装 Event扩展

pecl.php.net

wget https://pecl.php.net/get/event-2.4.3.tgz

解压:

tar xf event-2.4.3.tgz

cd event-2.4.3

编译:

/usr/local/php/bin/phpize

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

make && make install

修改php.ini

extension = event.so

/etc/init.d/php-fpm restart

检测workman环境是否安装成功

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

如果成功,则显示:

安装框架:

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

0x01 wokerman 简单开发DEMO

#实现简单的http服务器

worker_http.php (和Workerman文件夹同级)

onMessage = function($connection,$data){
    $connection->send('Hello Workerman HTTP');
};

Worker::runAll();

php worker_http.php  start

php worker_http.php start -d 让该进程成为一个守护进程,在后台运行

#实现websocket

require_once 'Workerman/Autoloader.php';
use Workerman\Worker;

$ws = new Worker('websocket://0.0.0.0:8880');
$ws->onMessage = function($connection,$data){
    $connection->send('hello websocket');
};
Worker::runAll();

0x02 Worker类

Worker 类 用于实现端口的监听,并可以设置客户端的连接事件,连接上消息事件,连接断开事件的回调函数,从而实现业务处理

$worker = new Worker($listen,$context)

$content 用于传递socket的上下文选项

$listen string  格式 协议:// 允许连接的ip地址:端口

协议只可以是以下六种:

TCP tcp://0.0.0.0:8686

UDP udp://0.0.0.0:8686

unix unix:///tmp/my_file

http http://0.0.0.0:8686

websocket ws://0.0.0.0:8686

text text:0.0.0.0:8686 text协议是workerman内置的文本协议,兼容telnet协议

0x02 worker 类的属性以及主进程子进程

$worker-count = 4; 指定启动的进程数

workermanDay01 安装、Worker类_第1张图片

master进程 是父进程

worker进程 是子进程

master进程管理 worker进程 ,实际监听端口的活 由 worker进程来干

workermanDay01 安装、Worker类_第2张图片

workermanDay01 安装、Worker类_第3张图片

demo :  对特定id的进程特殊处理

注意这里的id并不是worker进程的pid,而是worker自己对worker进程编的号,从0 开始

require_once 'Workerman/Autoloader.php';
use Workerman\Worker;

$listen = 'http://0.0.0.0:8880';
$worker = new worker($listen);
$worker->name ='chat';
$worker->count = 4;
$worker->onWorkerStart = function($worker){
    echo 'worker id...'.$worker->id.PHP_EOL;
    if($worker->id == 2){
        echo 'this is worker id 2'.PHP_EOL;
    }
};
Worker::runAll();

workermanDay01 安装、Worker类_第4张图片

workermanDay01 安装、Worker类_第5张图片

0x03Worker类的 回调属性

workermanDay01 安装、Worker类_第6张图片

workermanDay01 安装、Worker类_第7张图片

workermanDay01 安装、Worker类_第8张图片

workermanDay01 安装、Worker类_第9张图片

workermanDay01 安装、Worker类_第10张图片

workermanDay01 安装、Worker类_第11张图片

0x04 Worker类的接口

workermanDay01 安装、Worker类_第12张图片

0x05 Worker类代码流程分析

workermanDay01 安装、Worker类_第13张图片

workermanDay01 安装、Worker类_第14张图片

你可能感兴趣的:(计算机网络,PHP)