【发布时间】:2013-02-20 02:22:07
【问题描述】:
最近,我在托管服务提供商的 crontab 中运行的 php 脚本遇到了以下问题。该脚本用于从远程位置解析 xml 文件。初始脚本(在 crontab 中运行的那个)正在通过 include 调用另一个脚本(它是执行 xml 解析的那个):
include 'myXMLreader.php';
当从浏览器执行脚本时,一切都运行良好(xml 被解析并存储在数据库中)。但是,当从 cron 运行时,我收到以下错误:
“警告:myXMLreader::read() [xmlreader.read]:读取时发生错误...”,脚本停止。
奇怪的是,same脚本几天前就完美地从crontab中执行了。
为了执行脚本,我在我的 cron 管理器中使用以下行:
00 01 * * * php -q /home/my_domain/public_html/my_parser_script.php
我还将脚本执行的时间限制设置为零 (0),以避免因违反时间限制而被启动(因为 xml 解析需要超过 6 分钟才能完成)。
set_time_limit(0);
关于为什么会发生这种情况的任何帮助/建议?
发送
【问题讨论】:
-
这个 cron 作业在哪个用户 ID 下运行,您可能需要在 cron 作业中指定 php 的完整路径,例如
/usr/bin/php -q etc...作为一般说明:默认情况下,CLI 上的 PHP 通常禁用时间/内存限制。这些通常仅在 SAPI(网络服务器内)模式下应用。 -
可能是文件权限问题。
-
我已经要求我的托管服务提供商让我知道运行 cron 的用户 ID 和 php 的完整路径(顺便说一下,有没有办法让我自己找出后者?)。同时告诉你,我的两个php文件都设置了755权限