Использование заданий CRON для посещения URL-адреса?


81

У меня есть веб-приложение, которое должно выполнять повторяющиеся задачи, отправка сообщений и предупреждений, я уже использую страницу сценария для выполнения этих задач, когда она загружается в браузере, т.е. http://example.com/tasks.php, и я включил это с помощью iframe на каждой странице моего веб-приложения.

Теперь я хочу изменить это, чтобы использовать задания CRON, потому что первый подход может привести к снижению производительности. Итак, как я могу сделать задание CRON, которое посещает http://example.com/tasks.php . Однако я не хочу, чтобы это задание CRON создавало выходные файлы, такие как day. *!

Я размещаю приложение на общем хостинге, который разрешает задания CRON через cPanel.

Ответы:


220
* * * * * wget -O - http://yoursite.com/tasks.php >/dev/null 2>&1

Это должно сработать для вас. Просто есть wgetскрипт, который загружает страницу.

Использование -O -означает, что вывод веб-запроса будет отправлен в STDOUT (стандартный вывод)

добавляя, >/dev/nullмы указываем, что стандартный вывод будет перенаправлен в черную дыру. добавляя, 2>&1мы инструктируем STDERR (ошибки) также отправляться в STDOUT, и, таким образом, весь вывод будет отправлен в черную дыру. (так что он загрузит веб-сайт, но никогда никуда не запишет файл)


что это за звездочки в начале
Ашкан Мобайен Хиабани

@AshkanMobayenKhiabani Они являются частью синтаксиса cron: nncron.ru/help/EN/working/cron-format.htm
Митч Демпси

1
Единственное решение, которое у меня работало под Raspbian Stretch Lite. Отлично! : D
that-ben

4
Одно замечание: рекомендуется цитировать URL-адрес, если он содержит запрос, он может не работать, если все цитируется.
jackJoe

24

Вам не нужно перенаправление, используйте только

* * * * * wget -qO /dev/null http://yoursite.com/tasks.php

1
Почему перенаправление не нужно?
Bradley Flood

1
-q|--quiet Turn off Wget's output.
Diego Torres Milano

1
ваша команда также использует перенаправление, но в другой форме -qO / dev / null, не так ли?
Павел Назаров

Строго говоря, это не перенаправление, поскольку перенаправление ввода-вывода - это оболочка,
Диего Торрес Милано

21

Вы можете использовать curlкак есть в этой теме

Для ленивых:

*/5 * * * * curl --request GET 'http://exemple.com/path/check.php?param1=1'

Это будет выполняться каждые 5 минут.


10

Вы также можете использовать локальную командную строку php-cli:

* * * * * php /local/root/path/to/tasks.php > /dev/null

Это быстрее и снижает нагрузку на ваш веб-сервер.


7

я использую эти команды

wget -q -O /dev/null "http://example.com/some/cron/job.php" > /dev/null 2>&1

Задача Cron:

* * * * * wget -q -O /dev/null "http://example.com/some/cron/job.php" > /dev/null 2>&1

1
Этот требует пояснений, но он работает очень хорошо. Особенно, если, как и я, у вас в URL есть амперсанд. Помещение URL-адреса в кавычки - это решение. Почему вы помещаете / dev / null перед URL-адресом?
Gfra54 01

2
Возможно, это поздний ответ, но никогда не поздно. Причина: / dev / null - это особый объект файловой системы, который отбрасывает все, что в него записано. Перенаправление потока в него означает скрытие вывода. Часть 2> & 1 означает «перенаправить как поток вывода, так и поток ошибок».
Аббас Ариф

Итак, это означает, что содержимое wget перенаправляется в / dev / null (поэтому оно в основном удаляется и игнорируется)? Спасибо
Gfra54

1
Да, вывод, отправленный в / dev / null , игнорируется.
Аббас Ариф,

2

вы можете использовать это для URL с параметрами:

lynx -dump "http://vps-managed.com/tasks.php?code=23456"

lynx по умолчанию доступен во всех системах.


-dump выгружает содержимое страницы в файл. Это, возможно, нежелательный побочный эффект.
Wicher Visser



1

* * * * * wget --quiet https://example.com/file --output-document=/dev/null

Я нахожу --quietяснее -qи --output-document=/dev/nullяснее, чем-O - > /dev/null

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.