У меня есть PHP скрипт, допустим, для обработки фотографий, каждая обрабатывается секунд за шесть.
Но он успевает обработать только восемь из них. Дальше, несмотря на set_time_limit, (shared) хостинг обрывает выполнение.
Есть варианты как решить? Без поднятия своего личного сервера VDS, например?
Какую-нибудь очередь, чтобы каждая обрабатывалась в отдельном запросе.
Порядок важен, нужно обработать и вернуть результаты как можно скорее, крон через минуту не пойдёт.
Есть ли решение?
На шаред-хостинге можно извернуться обработкой через самозапросы к своим скриптам. Первый скрипт собирает файлы где-нибудь и вызывает скрипт-обработчик. Только обработчик работает над одним файлом, а потом вызывает себя же через страницу пользователя, чтобы самому завершиться, а следующий будет как-бы запущен от клиента.
Для правильного вопроса надо знать половину ответа
Вариант 1: Через curl_multi_exec вызвать локально обработчики сразу для всех фотографий. Чревато большой пиковой нагрузкой.
Вариант2: Получив картинки, вернуть клиенту список ссылок отдельных обработчиков, чтобы он вызывал их по завершению обработки предыдущей картинки. Чревато тем, что клиент может закрыться до окончания обработки всех картинок. На такой случай можно добавить cron-задания обработки всего необработанного.