PHP

Workerman笔记

Workerman笔记

Posted by BY on June 26, 2019

序言

Workerman是一款纯PHP开发的开源高性能的PHP socket 服务框架。官网

简单实例

<?php
    use 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');
    };
    
    // 运行worker
    Worker::runAll();

命令行运行 php http_test.php

Worker类

属性

count

int Worker::$count

设置当前Worker实例启动多少个进程,不设置时默认为1。

name

string Worker::$name

设置当前Worker实例的名称,方便运行status命令时识别进程。不设置时默认为none。

pidFile

static string Worker::$pidFile

如果无特殊需要,建议不要设置此属性

此属性为全局静态属性,用来设置WorkerMan进程的pid文件路径。

logFile

static string Worker::$logFile

用来指定workerman日志文件位置。

此文件记录了workerman自身相关的日志,包括启动、停止等。

回调属性

onWorkerStart

callback Worker::$onWorkerStart

设置Worker子进程启动时的回调函数,每个子进程启动时都会执行。

onConnect

callback Worker::$onConnect

当客户端与Workerman建立连接时(TCP三次握手完成后)触发的回调函数。每个连接只会触发一次onConnect回调。

onMessage

callback Worker::$onMessage

当客户端通过连接发来数据时(Workerman收到数据时)触发的回调函数

onClose

callback Worker::$onClose

当客户端连接与Workerman断开时触发的回调函数。不管连接是如何断开的,只要断开就会触发onClose。每个连接只会触发一次onClose。