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


PHP cron job vs. access through web browser

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

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

现在我想将其设置为CRON作业-然而,当我通过SSH/CRON作业执行它时-它会抛出异常,如"为foreach()提供无效参数"

问题:1. 为什么有一个delta的结果,我通过访问PHP页面抛出浏览器,当我试图执行它作为一个CRON作业/SSH命令行?是否有更多的东西,我应该指定的php页面工作良好时,通过SSH/命令行/cron作业访问?

= $ xml解析器("http://www.myhost.com/rss/");

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

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

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

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

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

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