一个用于消息队列的并发式php进程管理程序-守护

守护类

是主功能类

监听消息,分发消息 启动进程

看核心代码

1        while(1) {
2             $message = $this->_listening();
3             $this->_dispatch($message);
4             $this->_process_manager->close_processes();
5           
6         }

 ActiveMQ的listening方法

protected function _listening() {
        static $last_recv_time = 0;
        $last_recv_time = time();
        _print_log('waiting for recv message ...');
        while (1) { // 阻塞直到读取消息
            $message = $this->_activemq->receive();
            if ( $message !== false ) {
                $last_recv_time = time();
                _print_log("receive from:".$message->headers['destination'].
                "\nmessage-id:" .$message->headers['message-id'].
                " \nmessage-body-length:".strlen($message->body).
                " \nmessage-body:".substr($message->body, 0, 10)." ..."
                );
                //file_put_contents(SITE_PATH."/data/".$message->headers['timestamp'].".data", serialize($message));
                TimeRecorder::add($message->headers['message-id'], IndexTags::RecvMessage);
                return $message;
            } else {
                $error = $this->_activemq->getError();
                if ($error != '') {
                    _print_log("error:".$error );
                }
            }
            if (time() - $last_recv_time > 1800 ) { //
                $last_recv_time = time();
                $this->_reconnect();
            }
            $this->_process_manager->close_processes();
        }
    }

 

posted on 2017-06-14 15:28  在这个肆意的青春岁月  阅读(170)  评论(0)    收藏  举报