我正在使用PHP cURL从其他网站获取信息并将其插入我的页面.我想知道是否有可能将获取的信息缓存在我的服务器上?例如,当访问者请求页面时,信息将被提取并缓存在我的服务器上24小时.然后该页面在本地完全服务24小时.当24小时到期时,再次获取信息并在另一个访问者以相同方式请求时缓存该信息.
我目前用于获取信息的代码如下:
$url = $fullURL;
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
Run Code Online (Sandbox Code Playgroud)
这可能吗?谢谢.
您需要编写或下载php缓存库(如可扩展的php缓存库等)并调整当前代码以首先查看缓存.
假设你的缓存库有2个函数叫做:
save_cache($result, $cache_key, $timestamp)
Run Code Online (Sandbox Code Playgroud)
和
get_cache($cache_key, $timestamp)
Run Code Online (Sandbox Code Playgroud)
随着save_cache()您将节省$结果到缓存中,并与get_cache()您将检索数据.
$cache_key将是md5($fullURL)缓存库的唯一标识符,以了解您要检索的内容.
$timestamp 是您希望缓存有效的分钟/小时数,具体取决于您的缓存库接受的内容.
现在你的代码可以有一个逻辑:
$cache_key = md5($fullURL);
$timestamp = 24 // assuming your caching library accept hours as timestamp
$result = get_cache($cache_key, $timestamp);
if(!result){
echo "This url is NOT cached, let's get it and cache it";
// do the curl and get $result
// save the cache:
save_cache($result, $cache_key, $timestamp);
}
else {
echo "This url is cached";
}
echo $result;
Run Code Online (Sandbox Code Playgroud)