【问题标题】:PHP file_get_contents - Make a temporary local file?PHP file_get_contents - 制作一个临时的本地文件?
【发布时间】:2012-10-29 10:45:43
【问题描述】:

是的,我知道标题很混乱,但这是我想做的:

我创建了 3 个网站(针对客户。我无法控制它们)。所有这些网站都加载了我主网站的某个页面。 (使用 PHP file_get_contents - 我们将其命名为 www.mainsite/x.php)。

这里的问题是带宽。我希望这 10 个网站使用该 x.php 文件创建一些临时本地文件,而不是每次都加载 www.mainsite/x.php 文件。但是我可能会对该 x.php 文件进行一些更改,因此本地文件应该每周左右更新一次。

我的意思是: 网站 1,2 和 3 的 PHP file_get_contents 为 www.mainsite/x.php。在第一次加载时,它应该创建一个包含 x.php 内容的 x.html 文件(即:www.website1/x.html)。一周后,网站 1,2 和 3 应该再次加载 www.mainsite/x.php,如果对 www.mainsite/x.php 文件进行了更改,则创建一个新的 x.html 文件。

【问题讨论】:

  • 每周使用 cronjob 获取内容。这样您就可以在本地创建一个 HTML 文件并每周对其进行编辑。你甚至可以用它来创造历史。创建文件并不难。
  • 忘了提到我不再控制这 3 个网站,只控制带有 php 文件的主站点。那我该怎么办?
  • 告诉他们(那些外部站点)经常从您的站点加载。或者任何时候当你改变你的 x.html 时,通过电话给他们打电话并告诉他们更新:)
  • 那么减少流量并不是一个真正的选择,因为他们仍然会继续轮询您的网站。您可能想要 gzip 它,因为这会有所帮助。除了在这里压缩之外,你不能做更多的事情。另外,我必须同意@PaulDinh。那将是最好的选择。

标签: php


【解决方案1】:
public function generateTempFile(){
    $path = 'YOUR PATH';
    $original_path = 'YOUR ORIGINAL PATH WHICH you can change';

    if(file_exists($path)){
        $file_created_time = filemtime($path);
        if($file_created_time + 24*60*60 > time()){
            return TRUE;
        }
    }
    $string = file_get_contents($original_path);
    return file_put_contents($path, $string);   
}

此函数将检查文件的最后修改,如果超过 24 小时,它将重写它。要启动它,只需从 cron 任务中运行它,或者将它放在每天打开的某个页面的代码中确保它会运行..

在 $string 您必须设置文件新内容,您可以使用其他文件中的 file_get_contents() 来执行此操作..或者只是在自定义处生成一些字符串..

【讨论】:

  • @HiddenChampion ,请记住此代码必须在其他服务器上运行。 “忘了说我不再控制这 3 个网站了”
  • @VolkerK 当然,感谢您告诉我。这个社区真的很好。
  • @Svetlio 代码效果很好,但页面以代码结尾。它不会显示它之后的任何其他代码。我该如何解决?
  • 另外,如果我使用“公共功能”,我会得到一个错误。删除它工作正常。我仍然有网站不显示此代码(css、html 或 php)之后的任何内容的问题
【解决方案2】:
if(file_exists($pathtofile)){
return file_get_contents($pathtofile);
}else{
$newFileHtml=file_get_contents($webpathtogenerate);
file_put_contents($pathtofile,$newFileHtml);
return $newFileHtml;
}

然后你有一个每周运行一次并清除“缓存”文件的 crond 脚本

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2011-03-28
    • 1970-01-01
    • 2012-01-15
    • 2014-05-07
    相关资源
    最近更新 更多