Beispiel #1
0
 public function run()
 {
     $downloadQueue = $this->runner->queueManager->getQueue('download');
     $failedQueue = $this->runner->queueManager->getQueue('fail');
     $doneQueue = $this->runner->queueManager->getQueue('done');
     $tmp = sys_get_temp_dir();
     while ($task = $downloadQueue->pop()) {
         $url = Url::fromJson($task);
         $curl = (new CurlRequest($url->getUrl()))->exec();
         if ($curl->getHttpCode() !== 200) {
             if ($curl->getErrno()) {
                 $url->error = $curl->getError();
             } else {
                 $url->error = "http status {$curl->getHttpCode()}";
             }
             $failedQueue->push($url);
             continue;
         }
         if (!preg_match('@^image/(.+)$@', $curl->getContentType(), $m)) {
             $url->error = 'Not an image';
             $failedQueue->push($url);
             continue;
         }
         $this->saveFile($curl, $url->extension ? false : $m[1], $tmp);
         $doneQueue->push($url);
     }
 }