PHP cron作业与通过Web浏览器访问

时间:2011-12-23 00:32:43

标签: php cron

我有一个PHP脚本,它解析RSS提要并在数据库中输入信息。我使用的是PHP5。

这是一个.php页面,当通过网络服务器访问时,它就像魅力一样。浏览器。 (http://myhost.com/rssjob.php)

现在我想将其设置为CRON作业 - 但是当我通过SSH / CRON作业执行它时 - 它会在以下代码中抛出类似“为foreach()提供的无效参数”等异常。

问题: 1.为什么我通过访问PHP页面获得的结果会抛出浏览器,当我尝试将其作为CRON作业/ SSH命令行执行时?当通过SSH /命令行/ cron作业访问时,我应该为php页面指定更多工作吗?

$ xml = parseRSS(“http://www.myhost.com/rss/”);

//SAMPLE USAGE OF 
foreach($xml['RSS']['CHANNEL']['ITEM'] as $item) {
        //echo("<p>");
    $title = $item['TITLE'];

    $description = $item['DESCRIPTION'];

2 个答案:

答案 0 :(得分:2)

快速解决方案(hack)是通过来自cron的HTTP调用脚本:

? * * * * curl http://PATH.TO.YOUR/script.php

答案 1 :(得分:0)

通过cron vs web运行脚本有几点不同。例如,cron将没有$ _SERVER ['DOCUMENT_ROOT']变量。 如果你在脚本中使用它,这可能会破坏它。

我不确定您的样本行之前会发生什么,但由于某种原因,$ xml不是您期望的数组,就像它出现在Web版本中一样。 请检查$ cml变量从cron运行时的值。 确定脚本是否从命令行/ cron运行的简单方法是:

$cron = (bool) defined('STDIN');