curl — параллельная загрузка изображений для ImageMagick Stack Overflow

Я запускаю скрипт Imagick, который загружает сотни изображений и обрабатывает их вместе различными способами. Скрипт в настоящее время тратит около 95% своего времени на загрузку изображений и получает их синхронно, так что очевидно, что было бы полезно извлекать их асинхронно.

for ($i=0;$i<$quantity;$i++) {

$a=$arranged[$i];
$url  = $a->url;

/* time new image operation */
$download_time_start = getTime();
$temp=new Imagick($url);
$download_time_end = getTime();
$download_time += ($download_time_end - $download_time_start);
/* end time */

Я пытаюсь найти оптимальный способ заставить загрузки происходить параллельно. В настоящее время приложение находится на AWS.

Опция 1: Используйте что-то вроде curl_multi_exec для параллельного сбора изображений в скрипте PHP.

Вариант 2: Используйте что-то вроде сервиса SQS Amazon и рабочих, чтобы загрузить изображения, сохранить их в S3 и затем обработать их после завершения.

Интуитивно понятно, что вариант 1 кажется более быстрым, но более опасным, поскольку большое количество больших изображений может увеличить объем доступной оперативной памяти для этого экземпляра. Я также изо всех сил пытаюсь найти какие-либо примеры того, кто использует curl_multi для получения изображений таким способом. Вариант 2 считается неэффективным, поскольку время, необходимое для записи и последующего считывания всех изображений между экземпляром и S3, может быть значительным.

Любой совет приветствуется

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …