Как установить ограничение по времени только для одного php-файла?


У меня есть скрипт, который просматривает таблицу базы данных, выполняет некоторые проверки и на их основе делает уведомления для пользователей веб-сайта. Это работает довольно долго. В настоящее время в разработке для каждого пользователя требуется минута. Поэтому я думаю, что для этого мне нужно установить максимальное время выполнения (.htaccess, php и т.д.) равным 0.

В настоящее время он запущен с "страницы drupal с формой", позже я запущу его с помощью cron. Drupal не позволяет мне установить set_time_limit(0), потому что это еще не начало файла, куда я могу его поместить. Но я не хочу set_time_limit(0) для всего сайта.

Есть ли способ обойти это ограничение? Может быть, какое-то внешнее выполнение скрипта? Я бы хотел сохранить в нем функциональность Drupal.

 1
8
Author: Andy Core, 2019-04-23

1 answers

Не делай этого. Хотя это возможно, использование set_time_limit(0) дает вашему серверу свободу действий для выполнения на неопределенный срок; вы настраиваете себя на нестабильность сервера.

Если у вас большая рабочая нагрузка, которую необходимо выполнить в контексте Drupal, используйте его API очереди. Этот API позволит вам поставить в очередь список элементов для обработки (т. Е. строки таблицы, которые вы проверяете) и обработать их с помощью работника очереди (т. Е. Задачи, которая "выполняет проверки" и генерирует пользователя уведомления).

Вы можете найти множество примеров создания очереди и работника очереди, выполнив поиск в Google по [drupal 8 queue api].

 1
Author: Shawn Conn, 2019-04-24 06:00:43