yangakw yangakw

workerman手册记录

in 记录read (96) 文章转载请注明来源!

Worker

$connections//进程下的连接

callback Worker::$onWorkerStart//当workerman启动后执行回调,参数$worker

callback Worker::$onWorkerReload//当workerman重启执行操作,参数$worker

callback Worker::$onWorkerStop//当workerman执行回调,参数$worker

callback Worker::$onConnect//建立连接时执行回调,每个连接执行一次回调,参数$connection

callback Worker::$onMessage//客户端有消息发送过来的时候执行回调,参数$connection,$data

callback Worker::$onClose//客户端断开连接时执行回调,参数$connection

callback Worker::$onBufferFull//发送数据大小超过设置缓冲区上限是触发,停止发送,参数$connection

callback Worker::$onBufferDrain//发送数据大小超过设置缓冲区上限是触发,继续发送,参数$connection

callback Connection::$onError//发生错误处理

Connection

worker//Connection所属的Worker

$connection->worker->connections

callback Connection::$onMessage //针对当前连接收到消息后处理,参数$connection,$data

callback Connection::$onClose//针对当前连接关闭连接处理,参数$connection

callback Connection::$onError//针对当前连接发生错误处理


mixed Connection::send(mixed $data [,$raw = false]) $data

要发送的数据,如果在初始化Worker类时指定了协议,则会自动调用协议的encode方法,完成协议打包工作后发送给客户端

$raw 是否发送原始数据,即不调用协议的encode方法,默认是false,即自动调用协议的encode方法


string Connection::getRemoteIp() 获得该连接的客户端ip
int Connection::getRemotePort() 获得该连接的客户端端口
void Connection::close(mixed $data = '') 安全的关闭连接.

调用close会等待发送缓冲区的数据发送完毕后才关闭连接,并触发连接的onClose回调。


void Connection::destroy() 立刻关闭连接。

与close不同之处是,调用destroy后即使该连接的发送缓冲区还有数据未发送到对端,连接也会立刻被关闭,并立刻触发该连接的onClose回调。


void Connection::pauseRecv(void)
使当前连接停止接收数据。该连接的onMessage回调将不会被触发。此方法对于上传流量控制非常有用


void Connection::resumeRecv(void) 使当前连接继续接收数据。此方法与Connection::pauseRecv配合使用,对于上传流量控制非常有用
void Connection::pipe(TcpConnection $target_connection) 将当前连接的数据流导入到目标连接。内置了流量控制。此方法做TCP代理非常有用

AsyncTcpConnection

TcpConnection的子类 把php作为客户端连接其他的服务
void AsyncTcpConnection::__construct(string $remote_address, $context_option = null)

Timer

定时器类

int \Workerman\Lib\Timer::add(float $time_interval, callable $callback [,$args = array(), bool $persistent = true])

定时执行某个函数或者类方法。 注意:定时器是在当前进程中运行的,workerman中不会创建新的进程或者线程去运行定时器。

参数
time_interval 多长时间执行一次,单位秒,支持小数,可以精确到0.001,即精确到毫秒级别。

callback 回调函数注意:如果回调函数是类的方法,则方法必须是public属性

args 回调函数的参数,必须为数组,数组元素为参数值

persistent 是否是持久的,如果只想定时执行一次,则传递false(只执行一次的任务在执行完毕后会自动销毁,不必调用Timer::del())。默认是true,即一直定时执行。

 // 每2.5秒执行一次
   $time_interval = 2.5;
   Timer::add($time_interval, function()
   {
       echo "task run\n";
   });

boolean \Workerman\Lib\Timer::del(int $timer_id)

删除某个定时器

    $timer_id =  Timer::add(60, function()
    {
        echo "task run\n";
    });
    Timer::del($timer_id)

web服务器

// 这里监听8080端口,如果要监听80端口,需要root权限,并且端口没有被其它程序占用
$webserver = new WebServer('http://0.0.0.0:8080');
// 类似nginx配置中的root选项,添加域名与网站根目录的关联,可设置多个域名多个目录
$webserver->addRoot('www.example.com', '/your/path/of/web/');
$webserver->addRoot('blog.example.com', '/your/path/of/blog/');
// 设置开启多少进程
$webserver->count = 4;

Worker::runAll();

手册地址

jrotty WeChat Pay

微信打赏

jrotty Alipay

支付宝打赏

文章二维码

扫描二维码,在手机上阅读!

发表新评论
博客已运行
© 2017 yangakw
PREVIOUS NEXT
雷姆
拉姆