@beginer123

CRON как лучше сделать?

Здравствуйте, возник такой вопрос.
Логика сайта замешана на том что раз в день мне нужно запускать будет некий код.
Естественно через cron
Так вот, а что если вдруг мой скрипт внезапно упадет?
Я только что запустил его локально он прервался, через минуту ничего не меняя запустил еще раз, он заработал.
Возмем простейший пример, допустим скрипт должен в определенную колонку для каждой записи(их милион) добавлять +1
И напрример он сломался на 100 000-ой строке
Как сне сделать так чтобы в случае непридвиденной ошибки он все равно его довыполнил?
Но не просто заново, а с учетом его предыдущей работы
Как лучше такое сделать?
  • Вопрос задан
  • 290 просмотров
Пригласить эксперта
Ответы на вопрос 3
@deliro
Хранить состояние последнего запуска где-то и на каждом запуске проверять.
Ответ написан
@lega
1. Сделать атомарность, транзакции, если их нет, то другими способами, например если это файл, то сделать результирующий файл рядом и если все ок, то заменить (переименовать) исходный.
2. Помечать обработанные строки, в самой строке или с наружи.
3. Помечать текущую строку внутри/или снаружи, если процесс имеет "строгую" последовательность.

для каждой записи(их милион) добавлять +1

Конкретно эта задача решается не так, строки можно не обновлять совсем:
1) можно вычислять значение от даты создания строки
2) можно делать +1 всего лишь на одно значение, а во всех строках будет хранится только сдвиг
Ответ написан
Комментировать
На последней строке кода - записать в файл какое то значение, написать второй скрипт который проверяет значение и если его там нет - запустить скрипт еще раз.

Т.е первый крон в 12:00, второй в 12:05, тот что в 12:05 - скрипт который проверяет выполнение первого скрипта.

Думаю даже если с первого не включился, то со второго раза запустится ваш первый скрипт.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 02:11
5000 руб./за проект
01 мая 2024, в 00:29
2000 руб./за проект
01 мая 2024, в 00:20
15000 руб./за проект