2012-11-23 2 views
1

У меня есть набор cron для запуска php-файла, но по какой-то причине он не работает, когда придет время. Я могу вручную вызывать один и тот же файл в терминале, и он отлично работает. Нет сообщения об ошибке.cronjob не выполняется для определенного файла

Примечание: Есть еще много заданий для разных файлов &, и все они работают нормально. Разрешения одинаковы.

Благодаря

CRON

30 2 * * 1,2,3,4,5 php /var/www/html/cronjob/update-db.php 

Permissions

drwxr-xr-x 2 root root  4096 Nov 20 10:17 cronjob 

-rwxr-xr-x 1 root root 5808 Nov 21 17:21 update-db.php 
  • conn.php используется многими другими cronjobs и работает отлично.
  • этот код работает нормально, когда я вызываю его запустить в терминал.
  • каждый другой cronjob отлично работает, кроме этого.

КОД

require_once "/var/www/html/dbfolder/conn.php"; 


function write_log($message) 
{ 
    $filename = 'update-sis-assessment-column-log.txt'; 

    if (file_exists($filename)) 
    { 
     $handle = fopen($filename, 'a'); 
    } 
    else 
    { 
     $handle = fopen($filename, 'w'); 
     //chmod($filename, 0644); 
    } 

    fwrite($handle, $message . "\r\n\r\n"); 
    fclose($handle); 

    exit; 
} 

if (connectDB() === true) 
{ 
    $query = "SELECT......."; 
    $rcset = mysql_query($query); 

    $terms = null; 

    if (@mysql_num_rows($rcset) > 0) 
    { 
     while ($records = mysql_fetch_array($rcset)) 
     { 
      if (ctype_digit($records['Term'])) 
      { 
       $terms .= "'" . substr($records['Term'], 0, 4) . "-01', "; 
      } 
     } 

     $terms = substr($terms, 0, -2); 
    } 

    write_log('DONE : ' . $terms); 
} 
+0

вы проверяете cronlog? – GBD

+0

GBD где находится cronlog? Я попытался заглянуть в /home/user/cronlog.log, но этого не было – Erik

ответ

2

убедитесь, что PHP исполняемый в вашем пути или положить полный путь к PHP в хрон как

30 2 * * 1,2,3,4,5 /usr/bin/php /var/www/html/cronjob/update-db.php 

, если вы не уверены, где находится php, вы можете запустить

which php 

получить путь

+0

У меня около 20 заданий, и все работает нормально без включенной части '/ usr/bin/php', а также имеет разрешения' 0755'. – BentCoder

+0

, тогда я предлагаю вам сделать так, как предложил san4o, и проверить, что ошибка в файле журнала, еще одна вещь, которую вы должны помнить, состоит в том, что если вы включаете другие php-файлы в свой cron, вам нужно убедиться, что пути верны в нем как хорошо –

+0

Только что обнаружено, тот же файл работает в разных папках. Разрешения на все папки и файлы одинаковы. Однако в исходной папке все еще не работает. Нет ошибки. – BentCoder

1

Рекомендуем также перенаправить вывод в лог-файл и использовать более короткий интервал времени выполнения для отладки

*/5 * * * */USR/бен/PHP/вар/WWW/HTML/cronjob /update-db.php >> /path_to_log.log

+0

Создает пустой файл журнала. – BentCoder

+0

добавить немного отладочного эха «некоторые ...»; в php-скрипте. У вас есть другая работа в этом crontab? дозу они работают? – san4o

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