Есть ли альтернатива Cron Jobs? - PullRequest
8 голосов
/ 11 января 2011

Cron Jobs закрыты на моем сервере, и администратор сервера не может открыть его. Потому что работа cron замедляет работу сервера и т. Д. Итак, мне нужна альтернатива.

Мне нужно запускать php-файл ( cron.php ) каждые 2 минуты.

Итак, как я могу это сделать?

Ответы [ 8 ]

7 голосов
/ 25 февраля 2015

Несмотря на то, что вопрос был опубликован некоторое время назад, у меня возникла та же проблема, но я нашел решение (на основе ответа Киссаки , спасибо!) И подумал, что я опубликую его здесь для тех, кто все еще ищетдля возможного решения.

Пререквизиты:

  • Доступ по SSH
  • Python

Код (python):

from subprocess import call
import time
while True:
    call(["php","cron.php"])
    time.sleep(120)
2 голосов
/ 11 января 2011

Зависит от вашего доступа к коробке.

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

Имея доступ к оболочке, вы также можете запустить программу, предоставляющую сервис (cron).Будь то Java, Python или другая программа.

Задания Cron не всегда должны замедлять работу сервера.Это зависит от выполняемой работы.Если ваши работы стоят слишком дорого, ваш администратор, вероятно, не сможет работать с закрытыми заданиями cron и все равно снова замедлить работу сервера и может предпринять дальнейшие действия, чтобы помешать вам работать вокруг.

1 голос
/ 14 июня 2012

Подпишитесь на (бесплатную) службу мониторинга веб-сайта и запланируйте свой [url] /cron.php.Вы можете сделать так, чтобы страница веб-страницы возвращала что-то значимое, и настроить службу мониторинга для уведомления вас об этом ответе.

0 голосов
/ 30 апреля 2019

Существует несколько альтернатив Cron для Linux. Мол,

  1. Anacron - Anacron является периодическим планировщиком команд, как и cron. Единственное отличие состоит в том, что он не требует, чтобы ваш компьютер работал постоянно.

  2. fcron - Fcron - лучший из cron и anacron. Он не требует, чтобы ваш компьютер работал 24 × 7, и он может работать с заданиями на почасовой или минутной основе.

  3. Hcron

  4. Jobber и т.д.

Для дальнейшего чтения обратитесь к этой статье .

0 голосов
/ 18 марта 2019

Вы можете сделать это с помощью AWS Lambda. Используя Amazon Web Services (AWS), мы можем переместить все наши задания cron на Linux-сервер EC2. Переместите ваши задания Cron на без сервера за 3 шага: [https://thenewstack.io/move-your-cron-jobs-to-serverless-in-3-steps/][1]

0 голосов
/ 12 сентября 2018

Просто дополнение к ответам.Сценарий в редком случае.

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

Таблица CRON_RUN

last_run
----------
12-09-2018 11:55:12 (dd-mm-yyyy H:M:S)

Теперь в вашем приложении можно выполнять проверку каждый раз, когда происходят такие частые операции с БД, и проверять, имеют ли дата last_run и текущая дата х разница. X - это разница во времени, когда вы хотите запустить скрипт.2 минуты в вашем случае.Кроме того, если разница больше или равна 2 минутам, оператор update будет запускаться для обновления столбца last_run с указанием текущей даты и времени, а следующим оператором будет ваш скрипт cron.php.

0 голосов
/ 03 апреля 2014

Похоже, это может быть вашим решением - Бесплатное и простое выполнение Cronjob.

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

Нашел упоминание об этой вещи здесь - https://stackoverflow.com/a/6853113/123618

0 голосов
/ 27 октября 2012

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

...