使用PHP cURL缓存

Mat*_*att 9 php curl caching

我正在使用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)

这可能吗?谢谢.

Ton*_*ony 7

您需要编写或下载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)

  • 嘿,谢谢你的逻辑.最后我下载了pear cache_lite库,这似乎工作顺利.干杯. (3认同)