码迷,mamicode.com
首页 > 其他好文 > 详细

workerman源码分析(一)

时间:2017-02-09 16:10:18      阅读:768      评论:0      收藏:0      [点我收藏+]

标签:void   dma   root   nbsp   command   check   code   实例   isp   

worker类分析:

1.构造方法

/**
     * Construct.
     *
     * @param string $socket_name
     * @param array  $context_option
     */
    public function __construct($socket_name = ‘‘, $context_option = array())
    {
        // Save all worker instances.
        // 在这里目的就是当前woker对象hash化,并且存放到$_workers静态数组变量中,目的就是只要一次启动服务,所有的对象都只实例化一次,并且存放在内存中
        $this->workerId                  = spl_object_hash($this);
        self::$_workers[$this->workerId] = $this;
        self::$_pidMap[$this->workerId]  = array();

        // Get autoload root path.
        // debug_backtrace()这个函数使用来追踪代码执行顺序,这里就是取得启动文件名,并且设置_autoloadRootPath路径为启动文件目录
        $backtrace                = debug_backtrace();
        $this->_autoloadRootPath = dirname($backtrace[0][‘file‘]);

        // Context for socket.
        // 在这里是用来设置socket的context,可以用来设置ssl这样的加密通道
        if ($socket_name) {
            $this->_socketName = $socket_name;
            if (!isset($context_option[‘socket‘][‘backlog‘])) {
                $context_option[‘socket‘][‘backlog‘] = self::DEFAULT_BACKLOG;
            }
            $this->_context = stream_context_create($context_option);
        }

        // Set an empty onMessage callback.
        // 设置一个空的回调函数
        $this->onMessage = function () {
        };
    }

2.当启动文件new Worker()运行完构造方法之后,最后运行了类中的静态变量Worker::runAll();

/**
     * Run all worker instances.
     *
     * @return void
     */
    public static function runAll()
    {
        self::checkSapiEnv();
        self::init();
        self::parseCommand();
        self::daemonize();
        self::initWorkers();
        self::installSignal();
        self::saveMasterPid();
        self::forkWorkers();
        self::displayUI();
        self::resetStd();
        self::monitorWorkers();
    }

3.接下来我们就一个个进入到这些方法中,来具体看看其中的各个实现。

self::checkSapiEnv

 

workerman源码分析(一)

标签:void   dma   root   nbsp   command   check   code   实例   isp   

原文地址:http://www.cnblogs.com/shiwenhu/p/6382299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!