/**
  * according to the given count of pending items and the countInARun Setting this method
  * starts more crawling processes
  * @return boolean if processes are started
  */
 private function startRequiredProcesses()
 {
     $ret = FALSE;
     $currentProcesses = $this->processRepository->countActive();
     $availableProcessesCount = $this->processLimit - $currentProcesses;
     $requiredProcessesCount = ceil($this->queueRepository->countAllUnassignedPendingItems() / $this->countInARun);
     $startProcessCount = min(array($availableProcessesCount, $requiredProcessesCount));
     if ($startProcessCount <= 0) {
         return $ret;
     }
     if ($startProcessCount && $this->verbose) {
         echo 'Start ' . $startProcessCount . ' new processes (Running:' . $currentProcesses . ')';
     }
     for ($i = 0; $i < $startProcessCount; $i++) {
         usleep(100);
         if ($this->startProcess()) {
             if ($this->verbose) {
                 echo '.';
                 $ret = TRUE;
             }
         }
     }
     if ($this->verbose) {
         echo chr(10);
     }
     return $ret;
 }
コード例 #2
0
 /**
  * This method is used to show an overview about the active an the finished crawling processes
  *
  * @author Timo Schmidt
  * @param void
  * @return string
  */
 protected function drawProcessOverviewAction()
 {
     global $BACK_PATH;
     $this->makeCrawlerProcessableChecks();
     $crawler = $this->findCrawler();
     try {
         $this->handleProcessOverviewActions();
     } catch (Exception $e) {
         $this->addErrorMessage($e->getMessage());
     }
     $offset = intval(t3lib_div::_GP('offset'));
     $perpage = 20;
     $processRepository = new tx_crawler_domain_process_repository();
     $queueRepository = new tx_crawler_domain_queue_repository();
     $mode = $this->pObj->MOD_SETTINGS['processListMode'];
     if ($mode == 'detail') {
         $where = '';
     } elseif ($mode == 'simple') {
         $where = 'active = 1';
     }
     $allProcesses = $processRepository->findAll('ttl', 'DESC', $perpage, $offset, $where);
     $allCount = $processRepository->countAll($where);
     $listView = new tx_crawler_view_process_list();
     $listView->setPageId($this->pObj->id);
     $listView->setIconPath($BACK_PATH . '../typo3conf/ext/crawler/template/process/res/img/');
     $listView->setProcessCollection($allProcesses);
     $listView->setCliPath($this->processManager->getCrawlerCliPath());
     $listView->setIsCrawlerEnabled(!$crawler->getDisabled() && !$this->isErrorDetected);
     $listView->setTotalUnprocessedItemCount($queueRepository->countAllPendingItems());
     $listView->setAssignedUnprocessedItemCount($queueRepository->countAllAssignedPendingItems());
     $listView->setActiveProcessCount($processRepository->countActive());
     $listView->setMaxActiveProcessCount(tx_crawler_api::forceIntegerInRange($this->extensionSettings['processLimit'], 1, 99, 1));
     $listView->setMode($mode);
     $paginationView = new tx_crawler_view_pagination();
     $paginationView->setCurrentOffset($offset);
     $paginationView->setPerPage($perpage);
     $paginationView->setTotalItemCount($allCount);
     $output = $listView->render();
     if ($paginationView->getTotalPagesCount() > 1) {
         $output .= ' <br />' . $paginationView->render();
     }
     return $output;
 }
コード例 #3
0
 /**
  * Get active processes count
  *
  * @param void
  * @return int
  * @author Fabrizio Branca <*****@*****.**>
  * @since 2009-09-03
  */
 public function getActiveProcessesCount()
 {
     $processRepository = new tx_crawler_domain_process_repository();
     return $processRepository->countActive();
 }