Ejemplo n.º 1
0
 private function init()
 {
     if (!$this->gearmanTaskPool) {
         $this->gearmanTaskPool = new GearmanTaskPool();
         $this->gearmanTaskPool->setServers($this->servers);
         $this->gearmanTaskPool->setMaxTasks($this->maxTasks);
         $this->gearmanTaskPool->setTaskCallback([$this, '_onTask']);
         $this->gearmanTaskPool->setFunctionName($this->functionName);
         $this->gearmanTaskPool->setWorkloadCallback(function () {
             $url = $this->repository->next();
             return $url ? GearmanToolsUtils::packMessage($url) : false;
         });
     }
 }
Ejemplo n.º 2
0
 public function run()
 {
     while ($url = $this->repository->next()) {
         try {
             $this->processorPool->process($url);
         } catch (\Exception $e) {
             if ($this->logger) {
                 $this->logger->error("Failed to process url [{$url->getId()}] \"{$url->getUrl()}\": {$e->getMessage()}");
             }
         }
         foreach ($this->processorPool->getExtractedUrls() as $eu) {
             $this->repository->insert($eu);
         }
         $this->repository->done($url);
         // log
         $c = count($this->processorPool->getExtractedUrls());
         $this->logger->info("url: {$url->getUrl()} / status: {$url->getStatus()} / extracted: {$c}");
     }
 }