Важный вопрос про время скрипта

somefork
На сайте с 16.08.2008
Offline
99
516

Исходные данные - время работы скрипта 30 сек. Изменить нельзя. Хостинг не позволяет.

Есть ресурсоёмкая задача, выполняемая в определённое время кроном. Уложиться в эти 30 секунд не получается. Не знаю даже, как поступить...

Не хотелось бы запускать задачу при каждом заходе посетителя на сайт, дабы не нагружать лишний раз сервер.

Как быть в такой ситуации?

Ремонтостан (http://remontostan.com)
LEOnidUKG
На сайте с 25.11.2006
Offline
1726
#1

ну сделайте что-нибудь :)

Мы Вам телепатически передадим решение :)

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
somefork
На сайте с 16.08.2008
Offline
99
#2

Я понял. Видно я недостаточно точно сформулировал вопрос. Нужно раз в сутки удалять просроченные объявления с доски объявлений и отсылать каждому пользователю письмо с уведомлением.

CE
На сайте с 30.01.2008
Offline
73
#3
somefork:
Я понял. Видно я недостаточно точно сформулировал вопрос. Нужно раз в сутки удалять просроченные объявления с доски объявлений и отсылать каждому пользователю письмо с уведомлением.

ну удаляйте половину объявлений, третью часть, четвертую и т.д. пока не будете укладываться в 30 сек или можно задачи разделить - сначала удаление, потом отправка уведомлений или наоборот

[Удален]
#4

Разбейте задачу на части. Можно например делать эти действия не раз в сутки, а раз в час. Можно запускать один экземпляр скрипта, через минуту ещё один и так несколько раз, примерно вычислив сколько достаточно. Главное в этом случае изменить логику работы скриптов таким образом, чтобы следующая копия скрипта продолжала с места обрыва предыдущей.

DI
На сайте с 03.01.2007
Offline
123
#5

Вы в крон что записываете, обращение к url скрипта? Не помню, чтобы при прямом обращении к обработчику /usr/bin/php срабатывал таймаут.

Выводите после каждой записи что-нибудь в поток, если все-таки через http - то поможет flush(). Или разбейте на несколько этапов - удаляйте не раз в сутки, а 6 раз в сутки, с использованием LIMIT. Ну или еще чего-нибудь, насколько фантазии (и исходных данных) хватит:)

Высказывание идиотского утверждения требует на порядок меньше усилий, чем его последовательное и обоснованное опровержение и более того, иногда это опровержение вообще невозможно. © (http://zhurnal.lib.ru/s/shapiro_m_a/raspidiota.shtml)
somefork
На сайте с 16.08.2008
Offline
99
#6

ясно. Спасибо за ответы. Буду пробовать. В целом так и хотел сделать, просто думал, может есть уже какой-то велосипед, на котором можно поездить, прежде чем изобретать самому...

somefork
На сайте с 16.08.2008
Offline
99
#7

уддалил. Случайно продублировалось

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий