2017-01-09 5 views
0

Я запускаю Ubuntu 16.04 ОС и LAMPP внутри него. Я хочу запланировать выполнение задания cron каждую минуту и ​​выполнить скрипт PHP. Так вот что я сделал:Почему не мое задание cron Не работает мой PHP-скрипт?

Открыт терминал и вошел crontab -e

Он открыл файл CRONTAB в VIM, и я нажал клавишу ESC, чтобы войти в режим INSERT, а затем написал следующую команду:

* * * * * /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php 

Затем я нажал :wq, чтобы сохранить и выйти. Получил installing new crontab уведомление в терминале.

Теперь мой фактический сценарий должен проверить каталог на локальном сервере LAMPP на наличие файла .pdf или .docx, и если это так, то он должен продолжить работу, но с этого момента мне нужно было проверить, работа cron фактически бег каждую минуту. Итак, что я сделал, так это то, что сделал мой скрипт так:

Если в каталоге существует файл с расширением .pdf пр. docx, он удаляет их. Таким образом, я узнаю, запущена ли работа cron.

Но это не работает. Файл .pdf там очень много, и он не удаляется. Итак, как я могу узнать, работает ли моя работа cron правильно?

Источники моего обучения, чтобы сделать это в this, this, this и this.

<?php 

$pdfFileName = 'dumps/*.pdf'; 

$docxFileName = 'dumps/*.docx'; 

if ((count(glob($pdfFileName)) > 0) || (count(glob($docxFileName)) > 0)) { 

    /***********************************************/ 
    /*************** if the file exists ************/ 
    /***********************************************/ 

    if (file_exists($pdfFileName)) { 
     unlink($pdfFileName); 
    } 

    if (file_exists($docxFileName)) { 
     unlink($docxFileName); 
    } 

} else { 
    echo "File does not exist."; 
} 

?> 

ответ

1

Следующая кронтаб запись:

* * * * * /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php

означает, что /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.phpкоманда запускается каждую минуту так же, как если бы вы ввели эту строку в терминал и нажато Введите. Команда не будет выполнена, если выполняется хотя бы одно из следующих условий:

  • у текущего пользователя нет разрешений на выполнение для файла/каталога;
  • файл не сценарий оболочки, а shebang не указан

Таким образом, вы должны убедиться, что скрипт исполняемый для пользователя, который запускает кронтаба, и файл содержит притон, например,:

#!/usr/bin/php 

В качестве альтернативы, запустите скрипт явного вызова php исполняемых:

* * * * * php /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php 

Если php не доступен в PATH, либо указать полный путь к php, или добавить соответствующий путь к PATH переменная среды. Наиболее популярные реализации позволяют установить PATH через кронтаб и т.д .:

PATH=/bin:/sbin:/usr/sbin:/usr/bin:/opt/bin:/usr/local/bin 

(до записей с командами.)

+0

Эй, могу ли я просто откликнуться на скрипт _test_ PHP, чтобы проверить, правильно ли выполняется задание cron скрипта PHP? Где это будет отражено? В браузере? Как? Каков самый простой способ, который может сказать мне, если мое задание cron правильно выполняет мой php-скрипт? – Sie

+1

@Sie, 'echo' выводит текст на стандартный дескриптор вывода. Таким образом, текст появится в конечной точке, подключенной к стандартным выводам. Вы можете перенаправить его в файл как «php script.php>/tmp/output' –

+0

OK Я установил **' * * * * * php /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php>/opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/output.txt' ** задание cron и файл с именем 'output.txt' IS создается по пути, указанному каждую минуту, но когда я открываю его, это ПУСТОЙ. В то время как PHP-скрипт, который я пытаюсь запустить сейчас, это ' '. – Sie

1
* * * * * php /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php 
+0

Спасибо. Термин ** 'php' **, вы имеете в виду путь **'/opt/lampp/bin/php' **? – Sie

+1

обычно просто php в порядке, поскольку он записывал в переменную пути. –

+0

Эй, могу ли я просто выставить что-то в тестовом скрипте PHP, чтобы проверить, правильно ли выполняется задание cron скрипта PHP? Где это будет отражено? В браузере? Как? Каков самый простой способ, который может сказать мне, если мое задание cron правильно выполняет мой php-скрипт? – Sie

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