对workerman梳理http服务代码流程

经过了简单的梳理workerman代码流程,核心类库就三个一个是worker类,一个是select类,最后一个是tcp类,下面我就上代码吧:

1.worker类 我就改名为http,代码如下:

class Http
{
    /**
     * 存放select类的初始化
     */
    public static $globalEvent;

    /**
     * 协议转换数组
     */
    protected $builtinTransports = array(
        'tcp' => 'tcp',
        'udp' => 'udp',
        'unix' => 'unix',
        'ssl' => 'tcp',
    );

    /**
     * 默认协议
     */
    protected $transport = "tcp";

    /**
     * 地址
     */
    protected $address;

    /**
     * 协议头
     */
    protected $scheme;

    /**
     * 协议命名空间字符串
     */
    protected $protocol;
    
    /**
     * 流服务内容
     */
    protected $context;

    /**
     * 主socket
     */
    protected $mainSocket;


    const EV_READ = 1;

    /**
     * worker id
     */
    protected $workerId;

    /**
     * 所有woeker的集合数组
     */
    protected static $workers = array();

    /**
     * socket名称
     */
    protected $socketName;

    protected $pauseAccept = true;


    /**
     * 构造函数
     */
    public function __construct($socket_name = "", array $context_option = array())
    {
        $this->workerId                    = \spl_object_hash($this);
        static::$workers[$this->workerId] = $this;
        if ($socket_name) {
            $this->socketName = $socket_name;
            if (!isset($context_option['socket']['backlog'])) {
                $context_option['socket']['backlog'] = 102400;
            }
            $this->context = stream_context_create($context_option);
        }
    }

    /**
     * 执行函数
     */
    public static  function runAll()
    {
        reset(static::$workers);
        $worker = current(static::$workers);
        static::$globalEvent = new select();
        $worker->listen();
        \restore_error_handler();
        static::$globalEvent->loop();
    }

    
    public function acceptConnection($socket)
    {
        set_error_handler(function(){});
        $new_so
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值