Как выполнять скрипт php каждый день

62
6

Возможный дубликат:
Cron задание на Ubuntu для php

Я запускаю сервер ubuntu и каждый раз хочу запускать php-скрипт. Я провел некоторое исследование и обнаружил, что cron - лучший способ сделать это, однако, вот где я застрял, много информации в Интернете о cron очень сложно понять и понять.

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

Я попытался настроить задачу через plesk, которая предоставляется через мою веб-хост-службу, но она, похоже, не выполнялась, когда я этого хотел, я использовал 1 для минут, 22 часа, * для дня, * для недели и * для месяц и думал, что это будет выполняться каждый день в 22:01.

У меня есть каталоги на моем сервере: cron.hourly cron.daily cron.weekly cron.monthly

Я думал, что могу сбросить файл там, и он будет выполняться, например, каждый день, но я предполагаю, что мне нужно сделать скрипт cron, чтобы вызвать скрипт php правильно?

Если бы я должен был поместить файл в папку cron.daily, как бы я это сделал?

Также, если есть какие-то шаги, которые я должен предпринять на стороне php, пожалуйста, дайте мне знать?

Большое спасибо за ваше время.

спросил(а) 2012-08-31T15:36:00+04:00 8 лет, 8 месяцев назад
1
Решение
123

Существует несколько способов настройки работы cron. Предполагая, что вы получили доступ к оболочке, вы можете сделать crontab -e с консоли и определить там задание, например:

1 22 * * * command

который будет запускать command (независимо от того, что она есть) в 22:01 каждый день (не уверен, почему вы устанавливаете минуты на 1 вместо 0 хотя). Чтобы запустить PHP-скрипт, вам придется либо установить php-cli, а затем вызвать его так:

1 22 * * * <path>/php -q script.php

Вы также можете вызвать скрипт bash здесь, чтобы настроить все вещи, такие как пути и т.д., А затем вызвать форму php-скрипта bash - иногда проще это сделать, вместо того, чтобы создавать слишком длинную командную строку для cron. И это проще обновить позже. Кроме того, вы можете превратить ваш php-скрипт в сценарий bash-runnable, установив его бит выполнения (chmod a+x script.php) и добавив строку shell в качестве первой строки в вашем скрипте:

#!/usr/bin/php -q
<?php
...

Если в вашем скрипте слишком много зависимостей, и вы предпочитаете называть его через Интернет, вы можете использовать wget для имитации браузера. поэтому ваша command будет:

/usr/bin/wget --delete-after --quiet --spider <URL-TO-YOUR-SCRIPT>

Руководство wget можно получить с помощью man wget или wget -h или находится на этом веб-сайте. В качестве альтернативы вы можете использовать HEAD из пакета perl-www, но для него требуется perl, а wget - автономный инструмент. Если вы используете HTTPS с самоподписанными сертификатами, добавьте --no --no-check-certificate. И вы также можете настроить .htaccess и ограничить доступ к вашему скрипту cron на localhost/127.0.0.1

ответил(а) 2012-08-31T15:45:00+04:00 8 лет, 8 месяцев назад
88

каждую минуту:

* * * * * /path/script.php

каждые 24 часа (каждую полночь):


0 0 * * * /path/script.php

Поместите эту ссылку на то, как работает crontab: http://adminschoice.com/crontab-quick-reference, и этот удобный инструмент для создания cron jobx: http://www.htmlbasix.com/crontab.shtml

ответил(а) 2012-08-31T15:46:00+04:00 8 лет, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема