Доброго времени суток. Стоит задача реализовать на сайте функцию, которая раз в сутки будет делать необходимую проверку на сайте. Проблема в том что такая проверка занимает большое кол-во времени, так как для ее реализации необходимо выполнять обращение к другим ресурсам и работать (по приблизительным подсчетам) с 100 тыс. записей из базы данных.
Язык php. Фреймворк Yii2. База данных MySQL
Суть вопроса в следующем, какие есть практики для подобных проблем, когда не хватает времени на выполнения скрипта и он заканчивает свою работу? По поим подсчетам на полное выполнение скрипта уйдет около 2х часов. Как лучше это реализовывать?
Заранее благодарен за советы и ответы!
В базу данных добавляете индексное поле, например, tested
типа int(1)
со значением по умолчанию 0
. Когда скрипт проверил запись, он ставит ему значение 1
. Поскольку индекс короткий, это не вызовет замедление записи в базу. Запускайте скрипт не раз в сутки, а раз в 10 минут, пусть он лочит себя функцией flock
для предотвращения повторного запуска, выбирает 100 непроверенных записей и обрабатывает их. Не успел - не беда, при следующем запуске обработает. По поводу обращения к другим ресурсам - здесь время выполнения этого под Linux не считается, под Windows считается, по крайней мере для SAPI модуля Apache. Вот как под CLI, не уверен.
По поводу запуска раз в сутки, если скрипт будет создавать высокую нагрузку на протяжении значительного времени, за это хостер может и по попе надавать, если у вас не VDS.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
как можно при помощи регулярного выражения заменить //такой текст// на <em>такой текст</em>? при этом если вдруг попадется ссылка,а мы знаем...
Когда создаётся куки setcookie("Cookie", "123"); Значение "123" хранится в браузере пользователя и занимает несколько байтов памяти компьютераЕсли же создаётся...