Всем доброго времени.
Подкажите, как в WP можно выполнять функции асинхронно не заставляя пользователя ждать ее выполнения?
В 2х словах. От удаленного сервера получаю массив с ~50 объектами (периодически он меняется), которые содержат ссылки на изображения. Изображения очень большие, поэтому при первом получении массива хочу в фоне скачивать изображения на сервер, уменьшать их размер и вставлять в шаблон их уменьшенную копию, для более быстрой загрузки страницы конечному пользователю.
Пытался сделать примерно так
function cache_images() {
//скачивание, уменьшение размера изображений
}
add_action('cache_images', 'cache_images', 10, 1);
function render_template() {
// получение массива
// если (еще) нет сохраненных изображений
// вставляю оригинальные
// собственно тут и строится шаблон
wp_schedule_single_event(time(), 'cache_images', $listings);
}
По какой-то причине
wp_schedule_single_event не выполняет функцию
cache_images. Более того
wp_next_scheduled('cache_images') всегда возвращает
false. Пытался так же поиграть со временем, например
time() + 3600 . Результат тот же.
false
Если использовать вместо нее функцию
register_shutdown_function( 'cache_images', $listings) или
do_action('cache_images', $listings); То она пользователю приходится ждать пока на сервер загрузятся все ~50 изображений.
Собственно, снова вопрос:
Как отдать пользователю шаблон как есть (с оригинальными изображениями) и в фоне сохранить изображения.