Создаю zip-файл с помощью ZipArchive, куда записываю изображения. Процесс довольно долгий, но VPS позволяет.
$zip = new ZipArchive();
$imagesZipFile = __DIR__.'/../files/images_' . $xmlCreateDatetime . '.zip';
$imageNewName = 'autocity_'.$car['id'];
$i = 0;
foreach($imagesArray as $image){
if($image != '..' AND $image != '.'):
// Add image to zip
if($zip->open($imagesZipFile, ZipArchive::CREATE)!==TRUE):
continue;
endif;
$zip->addFile($imageDir . '/' . $image, $imageNewName.$image);
// Add string to xml
$ImageElt = $domDoc->createElement('Image');
$ImageName = $domDoc->createAttribute('name');
$ImageName->appendChild($domDoc->createTextNode($imageNewName.$image));
$ImageElt->appendChild($ImageName);
$ImagesNode->appendChild($ImageElt);
$i++;
endif;
}
$zip->close();
В итоге файл полностью создается, помещается в нужную папку, но в конце скрипт отдает Gateway Timeout, хотя при небольших циклах возвращает нужную переменную.
В итоге два вопроса:
Если у вас fast-cgi + php-fpm на сервере, то можно использовать функцию fastcgi_finish_request(); она отдает ответ браузеру, при этом скрипт продолжает выполняться на сервере, периодически записывая куда-то состояние выполнения задачи
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости