cronjob没有针对特定文件执行

时间:2012-11-23 09:05:59

标签: php linux cron

我有一个cron设置来运行一个php文件但由于某种原因它在时机成熟时不起作用。我可以在终端手动调用相同的文件,它工作正常。也没有错误消息。

注意:为不同的文件夹和文件设置了更多的作业,它们都可以正常工作。权限也一样。

由于

CRON

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

权限

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都能正常工作。

CODE

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);
}

2 个答案:

答案 0 :(得分:2)

确保php可执行文件在您的路径中或在cron作业中填写php的完整路径,如

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

如果你不确定php的位置,你可以运行

which php

获取路径

答案 1 :(得分:1)

还建议将输出重定向到日志文件,并使用较短的运行时间间隔进行调试

* / 5 * * * * / usr / bin / php /var/www/html/cronjob/update-db.php>> /path_to_log.log