示例#1
0
文件: Drive.php 项目: eyehere/aha
 protected function _onAckProcess()
 {
     $this->_objProtocolPackage->readPipe($this->_worker);
     $arrPackage = $this->_objProtocolPackage->getPackages();
     if (empty($arrPackage)) {
         return AHA_AGAIN;
     }
     foreach ($arrPackage as $package) {
         $message = json_decode($package, true);
         $cmd = intval($message['cmd']);
         switch ($cmd) {
             case Constant::PACKAGE_TYPE_COMPLETE:
                 //来自distribute进程 通知drive进程继续发任务
                 //\Daemon\Library\Ipc\Shared::getMaxTaskNumAtomic()->sub(1);//在distribute进程减1有最短路径
                 break;
             default:
                 Log::appLog()->warning(array(Monitor::KEY => Monitor::UNEXPECTED_PACK, '%package' => $package));
                 break;
         }
         Log::billLog()->debug(array('%package' => $package, 'type' => 'onAckProcess'));
     }
     if ($this->_bolNeedTrigger) {
         $this->_bolNeedTrigger = false;
         $this->_onAckTrigger();
     }
     return AHA_AGAIN;
 }
示例#2
0
文件: Redo.php 项目: eyehere/aha
 protected function _send($package)
 {
     $ret = $this->_worker->write(json_encode($package) . Constant::PACKAGE_EOF);
     if (false === $ret) {
         Log::monitor()->error(array(Monitor::KEY => Monitor::IPC_PIPE_WRITE_ERR, '&package' => $package));
         Log::redoLog()->debug(array('redo' => $package));
     } else {
         \Daemon\Library\Ipc\Shared::getMaxTaskNumAtomic()->add(1);
     }
     Log::billLog()->debug(array('&package' => $package, 'type' => 'send'));
 }
示例#3
0
文件: Master.php 项目: eyehere/aha
 protected function _taskWorkerComplete($package)
 {
     $pid = $package['content']['pid'];
     $res = \Daemon\Library\Ipc\Shared::getCurrentTaskTable()->decr($pid, 'taskNum', 1);
     if (false === $res) {
         Log::monitor()->error(array(Monitor::KEY => Monitor::TABLE_DECR_ERR, '#package' => $package));
     }
     $driveWorker = $this->_objManager->getDriveWorker();
     list($drivePid, $driveProcess) = each($driveWorker);
     $ret = $driveProcess->write(json_encode($package) . Constant::PACKAGE_EOF);
     if (false === $ret) {
         Log::monitor()->error(array(Monitor::KEY => Monitor::IPC_PIPE_WRITE_ERR, '#package' => $package));
         Log::redoLog(array('redo' => $package));
         return false;
     }
     Log::billLog()->debug(array('#package' => $package, 'type' => 'complete'));
     return true;
 }
示例#4
0
文件: Task.php 项目: eyehere/aha
 protected function _send($package)
 {
     $ret = $this->_worker->write(json_encode($package) . Constant::PACKAGE_EOF);
     if (false === $ret) {
         Log::monitor()->error(array(Monitor::KEY => Monitor::IPC_PIPE_WRITE_ERR, '^package' => $package));
         Log::redoLog()->debug(array('redo' => $package));
     }
     \Daemon\Library\Ipc\Shared::getMaxTaskNumAtomic()->sub(1);
     //在distribute进程减1有最短路径
     if (\Daemon\Library\Ipc\Shared::getMaxTaskNumAtomic()->get() > 2 << 16) {
         \Daemon\Library\Ipc\Shared::getMaxTaskNumAtomic()->set(0);
     }
     Log::billLog()->debug(array('^package' => $package, 'type' => '_distributeResponse'));
 }