Уважаемые, клиенты, разработчики и эксперты, как администратор серверов и облачных VDS/VPS, прошу внимательно относиться к задачам Крона (Планировщика) Linux, приведу наиболее частые ошибки:
При разных задачах, по часам или дням, вся куча заданий запускается в 00 минут - моя рекомендация, желательно понимать примерное время выполнения этой задачи, и раскинуть по минутам её выполнение. К примеру есть 3 задачи, которые нужно запускать раз в час, примерное время выполнение 2-3 минуты, то желательно выставить время у первой задачи: 5 * * * *; у второй 10 * * * *; у третьей 15 * * * *; Из данного примера вы избежите резкой нагрузки на сервер.
Также частая ошибка, задачи требуется запускать каждый час, или в какие то часы но забывают выставить минуты, пример: нужно выполнять задачу в 6 и 18 часов, Ошибка: * 6,18 * * *; Правильно: xx_минут 6,18 * * *. Просто часто с этим сталкиваюсь. При ошибочном указании вы запускаете задачу каждую минуту в 6 и 18 часов.
Слишком частое выполнение задачи, пример: запуск задачи каждые 3 минуты */3 * * * *, но задача длиться в среднем 4-5 минут, соответственно вы создаете потенциальный риск, повторного запуска задачи, и если в ней нет контроля на повторный запуск, то её выполнение приведет к непредсказуемым результатам.
Вытекает из ситуации описанной выше, кто то из разработчиков, предлагает использовать /usr/bin/flock - для подобного решения на контроль повторного запуска, но докладываю, не все панели управления серверов, а также не всегда ПО хостинга или сервера, позволяет использовать flock. За советом и помощью обратитесь к разработчику Креатив IT, у него хорошо сделана подобная реализация в "Поставщике Счастья". Мой совет вначале выполнения PHP создаете какой то файл, по окончании его удаляете, при подозрении, что задача может быть запущена дважды и более, также делайте логирование, минимум время запуска, время окончания и критические ошибки.
P.s. Пожалуйста, оставляйте в комментариях, какие вы ошибки видите, когда открываете чужой крон сайта и вам надо добавить свои задачи, я стараюсь оповестить клиента и прибрать в порядок задачи в Кроне.
Пожалуйста, оставляйте в комментариях, какие вы ошибки видите, когда открываете чужой крон сайта
Запуск задач cron из под root. Это просто праздник какой-то, которого не видно когда смотришь задачи cron из под пользователя.
Но проблема в том, что те кто так делают этот топик не прочитают, т.к. заходят сюда только для решения каких-то конкретных вопросов.
Это форум поддержки пользователей. Кроме него есть форум разработчиков. Может быть нужен форум для экспертов? Хотя тоже не уверен что эксперты будут его активно посещать...
Спасибо за советы, я просто, по опыту знаю, что много горя специалистов, смотрят этот форум и бегут решать задачи заказчикам, все мои сообщения, просто для того, чтобы эти "специалисты", хотя бы в итоге оставляли меньше работы, нормальным специалистам. Плюс есть, кто своими силами обслуживает Шопскрипт, и эти советы, в том числе для них.
P.s. а совет по flock, не в яблочко? не буду перечислять... чтобы опять не закидали...
мусорить лок-файлами в корень установки — такое себе решение.
самому создавать флаг-файл при запуске тоже плохо — пользователи часто запускают задания на какой-нибудь древней версии php и оно всё может упасть с фаталом, не стерев файл
А почему в корень? Из своего PHP кода, нельзя создавать в папках своего кода, или в wa-log? И почему по просьбе выше, насчет минимальных логов, не писать их, чтобы и пользователи плагина и администраторы проекта, смогли по логам понять что происходит?
Пример лога: Не могу запуститься, прошлый запуск был не удачным.
А в инструкции соответственно добавить, в разделе важное, что при не удачных запусках удалить этот файл. А еще лучше сделать кнопку из админки магазина.
P.s. И правила хорошего тона, при написании логов для PHP, являются 4-е уровня ведения логов, для примера: минимальный, нормальный, расширенный, максимально подробный. Это еще и упрощает отладку, при написании кода.
Ну и для юмора, недавно на сайте: function.social.php
"Автор" хотел просто записать в куки, время устаревания в 5 минут. Хотя давно синтаксис, должен быть подобным:
setcookie('social','true', time()+300);
Но видимо "автору" виднее, и надо было забить пару функций и на ровном месте решить математическую задачу, но "мелко" надо было через синус, косинус, и тангенс решать временную функцию, так было бы еще надежнее, а еще пару матриц перемножить )))
И вообще перестаньте заниматься копипастом, https://www.php.net/ - вам в помощь, и даже русский язык есть.
5 комментариев
Угадай автора по стилю
Запуск задач cron из под root. Это просто праздник какой-то, которого не видно когда смотришь задачи cron из под пользователя.
Но проблема в том, что те кто так делают этот топик не прочитают, т.к. заходят сюда только для решения каких-то конкретных вопросов.
Это форум поддержки пользователей. Кроме него есть форум разработчиков. Может быть нужен форум для экспертов? Хотя тоже не уверен что эксперты будут его активно посещать...
Спасибо за советы, я просто, по опыту знаю, что много горя специалистов, смотрят этот форум и бегут решать задачи заказчикам, все мои сообщения, просто для того, чтобы эти "специалисты", хотя бы в итоге оставляли меньше работы, нормальным специалистам. Плюс есть, кто своими силами обслуживает Шопскрипт, и эти советы, в том числе для них.
P.s. а совет по flock, не в яблочко? не буду перечислять... чтобы опять не закидали...
мусорить лок-файлами в корень установки — такое себе решение.
самому создавать флаг-файл при запуске тоже плохо — пользователи часто запускают задания на какой-нибудь древней версии php и оно всё может упасть с фаталом, не стерев файл
А почему в корень? Из своего PHP кода, нельзя создавать в папках своего кода, или в wa-log? И почему по просьбе выше, насчет минимальных логов, не писать их, чтобы и пользователи плагина и администраторы проекта, смогли по логам понять что происходит?
Пример лога: Не могу запуститься, прошлый запуск был не удачным.
А в инструкции соответственно добавить, в разделе важное, что при не удачных запусках удалить этот файл. А еще лучше сделать кнопку из админки магазина.
P.s. И правила хорошего тона, при написании логов для PHP, являются 4-е уровня ведения логов, для примера: минимальный, нормальный, расширенный, максимально подробный. Это еще и упрощает отладку, при написании кода.
Ну и для юмора, недавно на сайте: function.social.php
"Автор" хотел просто записать в куки, время устаревания в 5 минут. Хотя давно синтаксис, должен быть подобным:
Но видимо "автору" виднее, и надо было забить пару функций и на ровном месте решить математическую задачу, но "мелко" надо было через синус, косинус, и тангенс решать временную функцию, так было бы еще надежнее, а еще пару матриц перемножить )))
И вообще перестаньте заниматься копипастом, https://www.php.net/ - вам в помощь, и даже русский язык есть.