Exemplo n.º 1
0
    public function InsertUpdate(JobQueueEntity $oJobQueueEntity)
    {
        $sEndTime = ', job_end_time = NULL';
        $sStatus = $oJobQueueEntity->getStatus();
        if ($sStatus === NULL or $sStatus === 'started') {
            $sStatus = 'started';
        }
        if ($sStatus == 'completed') {
            $sEndTime = ', job_end_time = NOW()';
        }
        $sSql = 'INSERT INTO
					' . $this->sTableName . '
							(   id
							  , user_id
							  , job_status
							  , job_start_time
							  , job_end_time
							  , pid
							)
				VALUES
							(   ?
							  , ?
							  , "started"
							  , NOW()
							  , NULL
							  , ?
							)
				ON DUPLICATE KEY UPDATE
					    id           = id
					  , job_status   = ?
					  ' . $sEndTime . '
					  , pid			 = ?';
        $aBindArray = array($oJobQueueEntity->getId(), $oJobQueueEntity->getUserId(), $oJobQueueEntity->getPid(), $sStatus, $oJobQueueEntity->getPid());
        $this->Execute($sSql, $aBindArray);
        $oJobQueueId = $this->oAdapter->getDriver()->getLastGeneratedValue();
        $oJobQueueEntity->setId($oJobQueueId);
        return $oJobQueueEntity;
    }
 private function IsProcessStillRunning(JobQueueEntity $oJobQueueEntity)
 {
     $sJobId = $oJobQueueEntity->getId();
     $iOldPid = $oJobQueueEntity->getPid();
     if ($iOldPid === null) {
         return false;
     }
     $bIsProcessStillRunning = $this->oFile->PidExists($iOldPid);
     // Exit if it is still running
     if ($bIsProcessStillRunning) {
         $sLogData = $sJobId . ' . is still running with pid ' . $iOldPid;
         $this->oLogger->Log($sLogData);
         return true;
     }
     return false;
 }