Використовуєте робочі місця CRON для відвідування URL-адреси?


80

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

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

Я розміщую додаток на службі спільного хостингу, що дозволяє роботу CRON через cPanel.

Відповіді:


219
* * * * * 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
той-бен

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

24

Вам не потрібно переспрямування, використовуйте лише

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

1
Чому переадресація не потрібна?
Bradley Flood,

1
-q|--quiet Turn off Wget's output.
Дієго Торрес, Мілано,

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,

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.