Cron的工作有帮助

时间:2011-12-08 04:21:19

标签: php cron

我正在尝试通过我的网站cpanel创建一个cron作业。我已经谈过支持服务,他们给了我这个命令来运行我的网站上执行一个php文件。

/usr/local/bin/php -q /home/mymcstatus/domains/mymcstatus.net/public_html/redesign/scripts/update.php

这似乎不起作用,我还使用* / 1将分钟间隔设置为每分钟。

我在update.php文件中使用下面的代码:

<?php
ini_set('display_errors', 1); 
ini_set('log_errors', 1); 
ini_set('error_log', dirname(__FILE__) . '/error_log.txt'); 
error_reporting(E_ALL);

require('minequery.class.php');
include('../config/config.php');

    $date = date("D-M-Y");

    $file = fopen("UPDATE_LOG($date).txt", 'w');

    $query = mysql_query("SELECT * FROM servers") or die(mysql_error());

    if($query) {

    while($row = mysql_fetch_array($query)) {

        $ip = $row['ip'];
        $port = $row['port'];
        $name = $row['name'];

        $string = "[UPDATE LOG]: $date - Updated Server $name \n";


        fwrite($file, $string);

        print("[UPDATE LOG] Updated Server $name </br>");



    }

    mail("duncan@mymcstatus.net","UPDATED","Server has updated","From: Mymcstatus");    

    } else {

        print("Cant query");
    }



?>

当我通过代码有效的Web浏览器手动访问update.php时,Cronjob似乎没有发生任何事情。我错过了什么或做错了什么?

4 个答案:

答案 0 :(得分:0)

这里有一些事情可以发生。第一个是检查update.php的文件权限并确保它是可执行的。 cron可能作为不具有执行update.php权限的其他用户执行。您可以尝试的第二件事是将此作为update.php的第一行,之前没有空格。

#!/usr/local/bin/php

答案 1 :(得分:0)

通常cron作业不会从PHP所在的同一目录运行,因此它可能正在运行,但输出文件正在其他地方创建。尝试将输出文件路径更改为文件的完整路径,即:

$file = fopen("/home/mymcstatus/domains/mymcstatus.net/public_html/redesign/scripts/UPDATE_LOG($date).txt", 'w');

答案 2 :(得分:0)

在上述评论的帮助下,我设法修复了文件路径,但它也归结为命令。我把错误的用户路径放在这里是有效的命令。

/usr/local/bin/php -q /home/mymcstat/domains/mymcstatus.net/public_html/redesign/scripts/update.php

感谢您的帮助

答案 3 :(得分:0)

cd对于你的脚本的路径总是一个好主意。这样,您不需要更改includerequire文件的名称以及参与文件操作的任何其他文件名。你的cronjob命令可能如下所示:

  

cd /home/mymcstatus/domains/mymcstatus.net/public_html/redesign/scripts/; / usr / local / bin / php -q /home/mymcstatus/domains/mymcstatus.net/public_html/redesign/scripts/update.php

您不需要以这种方式提供任何绝对文件路径。