/**
  *  Main execute method
  *  Execute actions for a given message
  *
  *  @param (AMQPMessage) $msg       An instance of `PhpAmqpLib\Message\AMQPMessage` with the $msg->body being the data sent over RabbitMQ.
  *
  *  @return (boolean) Execution status (true if everything's of, false if message should be re-queued)
  */
 public function execute(AMQPMessage $msg)
 {
     $website = new WebsiteMessage($msg->body);
     $logger = $this->container->get('logger');
     $logger->debug("[website] Crawling: " . $website->getUrl() . "…");
     try {
         $startTime = microtime(true);
         $res = $this->client->get($website->getUrl());
         $endTime = microtime(true);
         $website->setHttpCode($res->getStatusCode());
         $website->setResponseTime($endTime - $startTime);
         $website->setDatetime(new \Datetime('now'));
         if ($res->getStatusCode() == 200) {
             $website->setStatus(Website::STATUS_OK);
             $website->setGenerator($this->getResponseGenerator($res));
             $this->produceNotification($website);
             return true;
         } else {
             $website->setStatus(Website::STATUS_FAIL);
             $website->setFailMessage($res->getReasonPhrase());
             $this->produceNotification($website);
             return true;
         }
     } catch (RequestException $e) {
         $website->setStatus(Website::STATUS_FAIL);
         $website->setFailMessage($e->getMessage());
         $this->produceNotification($website);
         return true;
     }
 }
Пример #2
0
 public function findOneWithMessage(WebsiteMessage $message)
 {
     if ($message->getId() != '') {
         return $this->findOneById($message->getId());
     }
     if ($message->getUrl() != '') {
         return $this->findOneByUrl($message->getUrl());
     }
     if ($message->getName() != '') {
         return $this->findOneByName($message->getName());
     }
     return null;
 }