У меня есть функция, выполнение которой занимает очень много времени (загрузка некоторых внешних изображений в моем случае), и я хочу избежать execution time exceeded
ошибка.
Есть ли способ избежать этого (например, разделив загрузку отдельных изображений в один php ‘потоки‘ или что-то типа того) ?
Я не могу поменять execution time limit
или любой из ini settings
,
Я не могу использовать cron works, как в WordPress, и не могу контролировать платформу конечного пользователя.
Одной из возможностей является создание скрипта PHP, который загружает один внешнего изображения, и пусть этот скрипт вызывается с помощью Ajax. Затем вы можете создать пользовательский интерфейс с JavaScript, который вызывает этот скрипт PHP для каждого изображения, одно за другим. Может отображаться индикатор выполнения в зависимости от того, сколько изображений уже загружено.
Да, ты можешь. Но вам придется разместить или проксировать изображения, которые вы хотите загрузить с помощью чанка, если удаленный сервер не понимает частичную загрузку при передаче.
Затем вам нужно будет заставить ваш скрипт PHP запрашивать изображение кусками на сервере
Запрос
GET /proxy/?url=http://example2.com/myimage.jpg HTTP/1.1
Host: www.example.com
Range: bytes=200-1000
Ответ
HTTP/1.1 206 Partial Content
Date: Tue, 17 Feb 2015 10:50:59 GMT
Accept-ranges: bytes
Content-range: bytes 200-1000/6401
Content-type: image/jpeg
Content-length: 800
У вас будет много вариантов вызывать ваш php-скрипт достаточно раз, чтобы получить все фрагменты: автоматически обновлять страницу, ajax-запрос, …