Как ускорить media_handle_sideload и почему он долго грузит?

Идея такая: на фронтенде у меня есть скрипт, которому передаю массив со ссылками на изображения и другие файлы (прямые ссылки для скачивания с домена№1 на котором и крутится фронтенд), дальше при нажатии на сабмит - мы шлём запрос на домен№2 на котором стоит вордпресс и есть файл с функцией media_handle_sideload для загрузки всех изображений в библиотеку файлов wordpress...
Всё отлично отрабатывает, если мы передаем массив из 4-5 файлов (1 файл от 1 до 5 мб), но когда общее число файлов превышает 7 единиц или вес превышает 30мб суммарный, то мы получаем или 504 ошибку или 500 ошибку... Как я понял ошибка max execution time (в php ini уже поставил 120 секунд), но если грузить из админки, то всё замечательно.... а через скрипт постоянно ошибки и грузится только первые три картинки...
Вот кусок кода обработчика (которому присылается массив):
$imgs_url = $_REQUEST['screens'];
foreach ($imgs_url as $i => $download_url) {
    $url = $download_url;

// Загрузим файл
    $tmp = download_url($url);

// Установим данные файла
    $file_array = [
        'name' => basename($url), // ex: wp-header-logo.png
        'tmp_name' => $tmp,
        'error' => 0,
        'size' => filesize($tmp),
    ];
// загружаем файл
    $id = media_handle_sideload($file_array, $post_id, $desc);
    array_push($id_imgs, $id);
// если ошибка
    if (is_wp_error($id)) {
        @unlink($file_array['tmp_name']);
        return $id->get_error_messages();
    }

// удалим временный файл
    @unlink($tmp);
}
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 2
kaliyan
@kaliyan
php-developer, wordpress-developer
Точно ответить на вопрос нельзя. Много чего может быть...

Но мало смотреть max_execution_time (поставьте set_time_limit(0), чтобы исключить проблему с временем) , смотрите еще на:
post_max_size
upload_max_filesize
max_file_uploads

Выставляйте их согласно вашим объемам.
Ответ написан
Комментировать
CoolHeart
@CoolHeart
Junior FrontEnd developer
Возможно в теме + плагинах задано большое количество add_image_size();
проверьте количество создаваемых миниатюр.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы