Как установить ограничение по времени только для одного php-файла?
У меня есть скрипт, который просматривает таблицу базы данных, выполняет некоторые проверки и на их основе делает уведомления для пользователей веб-сайта. Это работает довольно долго. В настоящее время в разработке для каждого пользователя требуется минута. Поэтому я думаю, что для этого мне нужно установить максимальное время выполнения (.htaccess, php и т.д.) равным 0.
В настоящее время он запущен с "страницы drupal с формой", позже я запущу его с помощью cron
. Drupal не позволяет мне установить set_time_limit(0)
, потому что это еще не начало файла, куда я могу его поместить. Но я не хочу set_time_limit(0)
для всего сайта.
Есть ли способ обойти это ограничение? Может быть, какое-то внешнее выполнение скрипта? Я бы хотел сохранить в нем функциональность Drupal.
1 answers
Не делай этого. Хотя это возможно, использование set_time_limit(0)
дает вашему серверу свободу действий для выполнения на неопределенный срок; вы настраиваете себя на нестабильность сервера.
Если у вас большая рабочая нагрузка, которую необходимо выполнить в контексте Drupal, используйте его API очереди. Этот API позволит вам поставить в очередь список элементов для обработки (т. Е. строки таблицы, которые вы проверяете) и обработать их с помощью работника очереди (т. Е. Задачи, которая "выполняет проверки" и генерирует пользователя уведомления).
Вы можете найти множество примеров создания очереди и работника очереди, выполнив поиск в Google по [drupal 8 queue api].