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(\GearmanJob $job)
 {
     $url = GearmanToolsUtils::unpackMessage($job->workload());
     $error = 0;
     try {
         $this->processorPool->process($url);
         $extractedUrlsCount = count($this->processorPool->getExtractedUrls());
         $message = "{$url->getUrl()} / depth: {$url->getDepth()} / status: {$url->getStatus()} / extracted: {$extractedUrlsCount}";
     } catch (\Exception $e) {
         $message = "Failed to process url [{$url->getId()}] \"{$url->getUrl()}\": {$e->getMessage()}";
         $error = $e->getCode();
         $error = $error === 0 ? -1 : $error;
     }
     $result = ['url' => $url, 'extractedUrls' => $this->processorPool->getExtractedUrls(), 'error' => $error, 'message' => $message];
     $this->logger->info($message);
     $result = GearmanToolsUtils::packMessage($result);
     return $result;
 }