【发布时间】:2011-10-27 11:08:04
【问题描述】:
我正在开发一个 PHP 网站,我正在将它转移到一个新的服务器上。我要迁移到的新服务器不具备 CRON 兼容性。为了弥补这一点,我设计了一个使用时间格式和数据库表等的系统来运行我的代码。
我遇到的问题是这段代码:
if ($lasttime < $pretime)
{
$newtime = strtotime("now");
queryMysql("UPDATE time SET time=".$newtime." WHERE time=".$lasttime);
include_once 'grabber/grabber.php';
}
具体来说是include_once 'grabber/grabber.php'; 导致了问题。当计时器到来并且此代码运行时,它会到达包含然后代码停止,没有提供错误,因此包含失败。我曾尝试将其更改为exec(),但老实说,我并不完全了解exec() 的工作原理以及它是否正确。我是这样使用的:
if ($lasttime < $pretime)
{
$newtime = strtotime("now");
queryMysql("UPDATE time SET time=".$newtime." WHERE time=".$lasttime);
$grabber = $base."grabber/grabber.php";
exec($grabber);
}
这不会停止代码并且似乎可以运行但实际上并不能正常工作,如果grabber/grabber.php 运行正确,那么我会收到一封电子邮件以确认使用 PHP mail() 函数
如果有人可以帮助我解决这个问题或提供一些启发,那就太好了。 谢谢。
【问题讨论】:
-
也许试试完整版的 exec?
exec ($grabber,$output,$return_code)看看 $output 返回什么? -
@charlesbridge 使用
exec意味着代码可以运行而不会导致加载时间变慢?同样在这种使用“完整版”的情况下,我会在$output和$return_code中添加什么? -
您应该看到手册页 (us3.php.net/manual/en/function.exec.php),$output 和 $return_code 是空变量,在完成时由 exec 填写。还有一些示例代码可以帮助您。
标签: php include cron exec background-process