PHP不会每天/ 6小时自动更新页面

时间:2010-03-23 02:17:26

标签: php

一位朋友在他的网站上建立了一个排名系统,我正试图通过wordpress和godaddy主持我的网站。它为他更新但是当我将它加载到我的网站时,它可以工作6个小时,但是一旦重新加载应该发生,它就会出错,我会收到500超时错误。

他的页面位于:http://www.jeremynoeljohnson.com/yakezieclub

我的页面目前位于http://sweatingthebigstuff.com/yakezieclub,但是当你重新加载= 1时,它会出错。

知道为什么会这样吗?我可能需要更改的任何设置?

我可以给你所有代码,但哪一部分? index.php文件?我不确定哪一部分搞砸了。我确实上传了与他相同的代码。

这是重装部分:

$cachefile = "rankings.html";
$daycachefile = "rankings_history.xml";
$cachetime = (60 * 60) * 6; // every 6 hours, the cache refreshes
$daycachetime = (60 * 60) * 24; // every 24 hours, the history will be written to - or whenever the page is requested after 24 hours has passed
$writenewdata = false;

if (!empty($_GET['reload']))
{
    if ($_GET['reload']== 1)
    {
        $cachetime = 1;
    }
}

if (!empty($_GET['reloadhistory']))
{
    if ($_GET['reloadhistory'] == 1)
    {
        $daycachetime = 1;
        $cachetime = 1;
    }
}

if (file_exists($daycachefile) && (time() - $daycachetime < filemtime($daycachefile)))
{
    // Do nothing
}
else
{
    $writenewdata = true;
    $cachetime = 1;
}

// Serve from the cache if it is younger than $cachetime
if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile)))
{
    include($cachefile);
    echo "<!-- Cached ".date('jS F Y H:i', filemtime($cachefile))." -->";
    exit;
}
ob_start(); // start the output buffer

&GT;

3 个答案:

答案 0 :(得分:0)

包含缓存文件后,您启动输出缓冲的任何特殊原因?如果缓存文件只是原始html,则必须先将其转储到输出流中,然后在开始缓冲之前进行缓存日期注释。

是否有可能脚本(或其他脚本)中的某些内容在输出文件上打了一个锁,这样重新加载检查部分会在等待锁清除时挂起?

答案 1 :(得分:0)

看起来真的很慢,这让我觉得你正在做一些非常密集的事情或者有很高延迟的事情。如果您的Web服务器达到其内部超时值,那么您将收到500错误。优化代码以提高速度或增加服务器超时以解决此问题。

如果您发布服务器平台,我可以告诉您如何增加超时时间。

希望这有帮助。

答案 2 :(得分:0)

两个线索:

  • 首先,检查文件系统在创建新文件时是否返回实际日期/时间。在某些系统上,文件修改时间本地化为时区,而其他系统则不是(GMT代替)。

  • 其次,请小心使用filemtime。 PHP使用缓存系统来避免访问hdd资源,这很好,但我从来没有发现如何在内部管理这个缓存并且是生命周期。我建议您每次运行更新脚本时调用clearstatcache