/** * 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; } }
/** * Get message from entity. * * @return WebsiteMessage */ public function getMessage() { $message = new WebsiteMessage(); $message->setId($this->getId()); $message->setUrl($this->getUrl()); $message->setName($this->getName()); $message->setStatus($this->getStatus()); return $message; }