如何在主模板文件中每天执行一次PHP代码块?非cron

时间:2014-10-02 04:13:10

标签: php cron

我有一块PHP代码生成我的sitemap.xml文件。问题是,它每次加载网站页面时都会生成文件。代码在我的主模板文件中。

我怎么能告诉PHP只执行这段代码,比如每天一次,而不是每次都加载模板?

我不想使用cron标签,因为代码需要在模板文件中。为同一帐户中的多个域提取模板文件。所以我需要在代码块only run this code when a page is loaded but only during a certain time frame each day, like from 12 noon to 4pm or something like that上添加一个条件。

我知道这就是cron的用途,但需要用PHP完成。

更新

所以这就是我根据Travesty3回答提出的。

$time  = time();
$sitemap = $_SERVER['DOCUMENT_ROOT'].'/sitemap.xml';
if ($time - filemtime($sitemap) >= 1*24*60*60) { // 1 days

(generate sitemap code here)

}

这很好用。现在,只有当网站每天至少有1位访问者时,才会每天生成一次站点地图。

但是如果网站有很多流量,这是我最初担心这样做的话,那么不检查sitemap.xml文件的filemtime会导致几乎相同的开销。服务器为每个请求生成站点地图文件?

1 个答案:

答案 0 :(得分:2)

您可以检查生成的文件上的filemtime,如果超过24小时,则只会在页面加载时生成。

此外,您可以使用cron执行PHP脚本或调用URL。所以也有。