Крон задачи и методы работы...

5

Уважаемые, клиенты, разработчики и эксперты, как администратор серверов и облачных VDS/VPS, прошу внимательно относиться к задачам Крона (Планировщика) Linux, приведу наиболее частые ошибки:

  1. При разных задачах, по часам или дням, вся куча заданий запускается в 00 минут - моя рекомендация, желательно понимать примерное время выполнения этой задачи, и раскинуть по минутам её выполнение. К примеру есть 3 задачи, которые нужно запускать раз в час, примерное время выполнение 2-3 минуты, то желательно выставить время у первой задачи: 5 * * * *; у второй 10 * * * *; у третьей 15 * * * *; Из данного примера вы избежите резкой нагрузки на сервер.
  2. Также частая ошибка, задачи требуется запускать каждый час, или в какие то часы но забывают выставить минуты, пример: нужно выполнять задачу в 6 и 18 часов, Ошибка: * 6,18 * * *; Правильно: xx_минут 6,18 * * *. Просто часто с этим сталкиваюсь. При ошибочном указании вы запускаете задачу каждую минуту в 6 и 18 часов.
  3. Слишком частое выполнение задачи, пример: запуск задачи каждые 3 минуты */3 * * * *, но задача длиться в среднем 4-5 минут, соответственно вы создаете потенциальный риск, повторного запуска задачи, и если в ней нет контроля на повторный запуск, то её выполнение приведет к непредсказуемым результатам. 
  4. Вытекает из ситуации описанной выше, кто то из разработчиков, предлагает использовать /usr/bin/flock - для подобного решения на контроль повторного запуска, но докладываю, не все панели управления серверов, а также не всегда ПО хостинга или сервера, позволяет использовать flock. За советом и помощью обратитесь к разработчику Креатив IT, у него хорошо сделана подобная реализация в "Поставщике Счастья". Мой совет вначале выполнения PHP создаете какой то файл, по окончании его удаляете, при подозрении, что задача может быть запущена дважды и более, также делайте логирование, минимум время запуска, время окончания и критические ошибки.

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


5 комментариев

  • +2

    Угадай автора по стилю

  • +2

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

    Запуск задач cron из под root. Это просто праздник какой-то, которого не видно когда смотришь задачи cron из под пользователя. 

    Но проблема в том, что те кто так делают этот топик не прочитают, т.к. заходят сюда только для решения каких-то конкретных вопросов.

    Это форум поддержки пользователей. Кроме него есть форум разработчиков. Может быть нужен форум для экспертов? Хотя тоже не уверен что эксперты будут его активно посещать... 

    • +4

      Спасибо за советы, я просто, по опыту знаю, что много горя специалистов, смотрят этот форум и бегут решать задачи заказчикам, все мои сообщения, просто для того, чтобы эти "специалисты", хотя бы в итоге оставляли меньше работы, нормальным специалистам. Плюс есть, кто своими силами обслуживает Шопскрипт, и эти советы, в том числе для них.

      P.s. а совет по flock, не в яблочко? не буду перечислять... чтобы опять не закидали...

      • +1

        мусорить лок-файлами в корень установки — такое себе решение.

        самому создавать флаг-файл при запуске тоже плохо — пользователи часто запускают задания на какой-нибудь древней версии php и оно всё может упасть с фаталом, не стерев файл

        • +3

          А почему в корень? Из своего PHP кода, нельзя создавать в папках своего кода, или в wa-log? И почему по просьбе выше, насчет минимальных логов, не писать их, чтобы и пользователи плагина и администраторы проекта, смогли по логам понять что происходит?

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

          А в инструкции соответственно добавить, в разделе важное, что при не удачных запусках удалить этот файл. А еще лучше сделать кнопку из админки магазина.

          P.s. И правила хорошего тона, при написании логов для PHP, являются 4-е уровня ведения логов, для примера: минимальный, нормальный, расширенный, максимально подробный. Это еще и упрощает отладку, при написании кода.

          Ну и для юмора, недавно на сайте: function.social.php

          Строка 10: setcookie('social','true',mktime(). time()+60*5);

          "Автор" хотел просто записать в куки, время устаревания в 5 минут. Хотя давно синтаксис, должен быть подобным:

          setcookie('social','true', time()+300);

          Но видимо "автору" виднее, и надо было забить пару функций и на ровном месте решить математическую задачу, но "мелко" надо было через синус, косинус, и тангенс решать временную функцию, так было бы еще надежнее, а еще пару матриц перемножить ))) 

          И вообще перестаньте заниматься копипастом, https://www.php.net/ - вам в помощь, и даже русский язык есть.

          Добавить комментарий

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