コード例 #1
0
 /**
  *
  */
 public function run()
 {
     echo "ImagickTaskRunner started\n";
     /** @noinspection PhpUndefinedMethodInspection */
     \ImagickDemo\Imagick\functions::load();
     \ImagickDemo\ImagickDraw\functions::load();
     \ImagickDemo\ImagickPixel\functions::load();
     \ImagickDemo\ImagickKernel\functions::load();
     \ImagickDemo\ImagickPixelIterator\functions::load();
     \ImagickDemo\Tutorial\functions::load();
     $maxRunTime = 60;
     // one minute
     $maxRunTime *= 60;
     // 1hour
     // Each image generated hurries up the restart by 50 seconds
     // for a max of 72 images generated per run
     $taskPseudoTime = 50;
     $endTime = time() + $maxRunTime;
     $count = 0;
     while (time() < $endTime) {
         $task = $this->taskQueue->waitToAssignTask();
         if (!$task) {
             echo ".";
             $count = $count + 1;
             if ($count % 20 == 0) {
                 echo "\n";
             }
             //Sleep for 1/10th of a second
             usleep(100000);
             continue;
         }
         echo "A task! " . "\n";
         $endTime -= $taskPseudoTime;
         try {
             $startTime = microtime(true);
             $this->execute($task);
             $time = microtime(true) - $startTime;
             $this->asyncStats->recordTime(self::EVENT_IMAGE_GENERATED, $time);
             echo "Task complete\n";
             $this->taskQueue->completeTask($task);
         } catch (\ImagickException $ie) {
             echo "ImagickException running the task: " . $ie->getMessage();
             $this->taskQueue->errorTask($task, get_class($ie) . ": " . $ie->getMessage());
         } catch (\Auryn\BadArgumentException $bae) {
             //Log failed job
             echo "BadArgumentException running the task: " . $bae->getMessage();
             $this->taskQueue->errorTask($task, get_class($bae) . ": " . $bae->getMessage());
         } catch (\Exception $e) {
             echo "Exception running the task: " . $e->getMessage();
             $this->taskQueue->errorTask($task, get_class($e) . ": " . $e->getMessage());
         }
     }
     echo "\nImagickTaskRunner exiting\n";
 }
コード例 #2
0
 /**
  *
  */
 public function run()
 {
     echo "ImagickTaskRunner started\n";
     \Imagick::setResourceLimit(\Imagick::RESOURCETYPE_TIME, 60);
     /** @noinspection PhpUndefinedMethodInspection */
     \ImagickDemo\Imagick\functions::load();
     \ImagickDemo\ImagickDraw\functions::load();
     \ImagickDemo\ImagickPixel\functions::load();
     \ImagickDemo\ImagickKernel\functions::load();
     \ImagickDemo\ImagickPixelIterator\functions::load();
     \ImagickDemo\Tutorial\functions::load();
     $resetTimeResourceLimit = false;
     if (false) {
         // ImageMagick has a 'non-optimal' way of measuring time passed
         // https://github.com/ImageMagick/ImageMagick/issues/113
         // Currently it does not appear possible to have both protection
         $maxRunTime = 60;
         // one minute
         $maxRunTime *= 60;
         // 1hour
         // Each image generated hurries up the restart by 50 seconds
         // for a max of 72 images generated per run
         $taskPseudoTime = 50;
         $resetTimeResourceLimit = true;
         // End rant
     } else {
         //Start remove this when time limit can be controlled better
         $maxRunTime = \Imagick::getResourceLimit(\Imagick::RESOURCETYPE_TIME);
         // one minute
         if ($maxRunTime <= 10) {
             $maxRunTime = 45;
         }
         // Each image generated hurries up the restart by 2 seconds
         // for a max of 30 images generated per run
         $taskPseudoTime = 2;
         //End remove this when time limit can be controlled better
     }
     $endTime = time() + $maxRunTime;
     $count = 0;
     while (time() < $endTime) {
         if ($resetTimeResourceLimit === true) {
             \Imagick::setResourceLimit(\Imagick::RESOURCETYPE_TIME, 45);
         }
         $task = $this->taskQueue->waitToAssignTask();
         if (!$task) {
             echo ".";
             $count = $count + 1;
             if ($count % 20 == 0) {
                 echo "\n";
             }
             //Sleep for 1/10th of a second
             usleep(100000);
             continue;
         }
         echo "A task! " . "\n";
         $endTime -= $taskPseudoTime;
         try {
             $startTime = microtime(true);
             $this->execute($task);
             $time = microtime(true) - $startTime;
             $this->asyncStats->recordTime(self::EVENT_IMAGE_GENERATED, $time);
             echo "Task complete\n";
             $this->taskQueue->completeTask($task);
         } catch (\ImagickException $ie) {
             echo "ImagickException running the task: " . $ie->getMessage();
             $this->taskQueue->errorTask($task, get_class($ie) . ": " . $ie->getMessage());
         } catch (\Auryn\BadArgumentException $bae) {
             //Log failed job
             echo "BadArgumentException running the task: " . $bae->getMessage();
             $this->taskQueue->errorTask($task, get_class($bae) . ": " . $bae->getMessage());
         } catch (\Exception $e) {
             echo "Exception running the task: " . $e->getMessage();
             $this->taskQueue->errorTask($task, get_class($e) . ": " . $e->getMessage());
         }
     }
     echo "\nImagickTaskRunner exiting\n";
 }
コード例 #3
0
 /**
  *
  */
 public function run()
 {
     /** @noinspection PhpUndefinedMethodInspection */
     \ImagickDemo\Imagick\functions::load();
     \ImagickDemo\ImagickDraw\functions::load();
     \ImagickDemo\ImagickPixel\functions::load();
     \ImagickDemo\ImagickKernel\functions::load();
     \ImagickDemo\ImagickPixelIterator\functions::load();
     \ImagickDemo\Tutorial\functions::load();
     $executableList = [];
     $imageGenerateExecutable = new Executable([$this, 'actuallyRun']);
     $imageGenerateExecutable->setTierNumber(\Tier\TierCLIApp::TIER_LOOP);
     $imageGenerateExecutable->setAllowedToReturnNull(true);
     $executableList[] = $imageGenerateExecutable;
     $timeoutExecutable = new Executable([$this, 'timeoutCheck']);
     $timeoutExecutable->setTierNumber(\Tier\TierCLIApp::TIER_LOOP);
     $executableList[] = $timeoutExecutable;
     return $executableList;
 }