/** * @param $queue * @return QueueElement|bool */ public function dequeue($queue) { $dbConnect = Db::getConnect(); $dbConnect->beginTransaction(); try { $query = Db::getConnect()->prepare("\n\t\t\t\tselect *\n\t\t\t\tfrom queue\n\t\t\t\twhere queue_name = :queue_name\n\t\t\t\tORDER BY id\n\t\t\t\tlimit 1 FOR UPDATE\n\t \t\t"); $query->bindParam(':queue_name', $queue); $query->execute(); $elementArray = $query->fetchAll(); $element = false; if (!empty($elementArray)) { $element = new QueueElement(); $element->setQueueName($elementArray[0]['queue_name']); $element->setFileUrl($elementArray[0]['file_url']); $element->setStatus($elementArray[0]['status']); $queryDelete = Db::getConnect()->prepare("\n\t\t\t\t\tdelete from queue where id = :id\n\t \t\t\t"); $queryDelete->bindParam(':id', $elementArray[0]['id']); $queryDelete->execute(); } $dbConnect->commit(); } catch (\Exception $e) { $dbConnect->rollBack(); $element = false; } return $element; }
public function run($args) { $file = $args[0]; /** * @param $handle * @return \Generator */ function getStr($handle) { while (($buffer = fgets($handle)) !== false) { (yield $buffer); } fclose($handle); } $handle = self::getFileHandler($file, "r"); $generator = getStr($handle); foreach ($generator as $url) { $newQueueElement = new QueueElement(); $newQueueElement->setFileUrl(trim($url)); (new DownloadQueue())->putElement($newQueueElement); } }