我目前正试图弄明白,我如何在我的网站上重建缓存。
我有一个缓存插件,工作正常,但我需要让我的cron脚本“模拟”重建缓存的实际请求(它没有此功能)。
我有一个获取所有URL的while循环,并且使用fopen和get_file_contents,我已经能够生成缓存,但它没有所有东西(不能用作缓存)。
基本上,我需要使用“实际加载URL”的函数/方法,但可以用作cron脚本。
有人可以帮助我吗?我需要改为发出HTTP请求吗?我输了。
注意:如果我使用浏览器打开网站,则会生成缓存并且正确无误。
使用fopen或get_file_contents,它检查网站,但不生成有效的缓存! : - )
这样的事情可以发挥作用:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.mywebsite.com/");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch)
echo $data; // Dont echo, it's a cron script
?>
答案 0 :(得分:0)
您可以使用ob_
方法在访问网页时缓存,而不必抓取它们。一些伪代码(只是if条件是伪的):
$cached_file_path = 'some path for cached file';
//TODO: would use filemtime($cached_file_path) and time() to determine if file was
//cached today. could also do it every 3 hours, or whatever
If file has not been cached today or cachefile does not exist, then
{
ob_start(); // starts recording the output in a buffer
//TODO: do all your database reads and echos
.....
$contents = ob_get_contents(); // gets all the output for you to save
//TODO: save contents to file at $cached_file_path
....
ob_end_flush(); // returns the content to client
//means we can cache the file and send to client at same time
//so this doesn't have to be run separately
exit;
}
else
{
//cache is current, so just serve the cached file
include($cached_file_path);
exit;
}
答案 1 :(得分:0)
我尝试了不同的方法..
好吧,如果它将直接链接放入我的cron作业管理器,它会刷新缓存。
必须以某种方式,我可以让我的脚本模仿这种行为吗?