2015-09-21 3 views
0

Я знаю, что этот вопрос задан раньше, но ни один из ответов не работает для меня. Я пытаюсь запустить простой скрипт PHP каждую ночь в полночь. Я создал файл с именем «autoDelete.php», который содержит только этот код:настроить задание Cron для запуска PHP-скрипта

<?php 
    include 'my-database-connection.php'; 
    mysql_query("DELETE FROM meetings WHERE indexDate < NOW()"); 
?> 

Я знаю, что этот скрипт работает, потому что, если я перейти к нему в браузере, он делает то, что он должен.

Затем я создал работу Cron (через GoDaddy Cpanel) запустить каждую минуту, с помощью команды для запуска сценария с помощью этого:

* * * * /usr/bin/php -q /home/username/public_html/autoDelete.php 

Однако, это не работает. Я подозреваю, что это имеет какое-то отношение к тому, что предшествует «/ home» в команде.

ответ

0

Некоторые вещи, чтобы проверить:

1) Работа Cron по умолчанию „рабочий каталог“ является домашний каталог пользователя ID они выполняются под. В этом случае это, скорее всего, будет /home/username. Это означает, что если у вас есть команды с относительным патчем include/require, они будут относиться к/home/username, NOT/home/username/public_html. УБЕДИТЕСЬ, что все необходимые файлы доступны.

2) Вы просто считаете, что вызов запроса преуспел. Это не то, что нужно делать. Звонки на внешние ресурсы (в частности, в DB) имеют только один способ добиться успеха и почти бесконечное количество способов отказа. ВСЕГДА проверяйте неудачу и относитесь к успеху как к приятному удивлению.

Объединив эти два (не включив сценарий подключения и не получив проверку на отказ), вы получите то, что у вас есть: «ничего» не происходит. По крайней мере, попробовать что-то вроде

mysql_query(...) or die(mysql_error()); 
       ^^^^^^^^^^^^^^^^^^^^^^ 

сообщение об ошибке, станет выход вашего скрипта, и получить по электронной почте в почтовый ящик контролирующего счета.

+0

ОК Марк, я добавил строку «mysql_error». Вот командная строка:/usr/bin/wget /home/cPanel-username/public_html/admin/autoDelete.php и вот сообщение об ошибке: /home/cPanel-username/public_html/admin/autoDelete.php: Схема отсутствует. –

+0

Это не сообщение об ошибке mysql. –

0

У меня были проблемы в прошлом с запуском PHP-скриптов в задании cron при попытке напрямую вызвать двоичный файл PHP. Мое решение состояло в том, чтобы использовать wget в задании cron, поскольку скрипт был доступен Apache в любом случае (0 0 * * * wget url/of/script.php). У Apache уже есть правильная среда PHP, поэтому можно просто попросить ее обработать эту работу.

+0

Я попробовал «wget» - и это работало, когда я запускал cron каждую минуту. Но когда я настраивал его на что-нибудь дольше, чем каждую минуту, это не сработало! У меня даже была технология GoDaddy. Они не были очень полезны (потому что, честно говоря, за пределами того, что они готовы поддержать), - иначе, чем предположить, что я должен использовать «php -q». –

+0

Это не имеет смысла. Если он работает с интервалом один раз в минуту, он также должен работать с интервалом один раз в день. Будет ли ежедневная работа выглядеть так: '0 0 * * * wget/url/of/script.php'? –

+0

У меня нет знака вопроса в конце строки. Вот что у меня есть: wget /home/username/public_html/admin/autoDelete.php –

Смежные вопросы