一个用于消息队列的并发式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(); } }
浙公网安备 33010602011771号