【问题标题】:My YouTube PHP script is heavy, how can I cache it?我的 YouTube PHP 脚本很重,如何缓存它?
【发布时间】:2012-07-10 07:06:22
【问题描述】:

如何在我的网站上缓存我的 YouTube PHP 脚本,使其每小时只请求新数据,而不是在每次页面加载时调用数据?

<?php
get_playlists();

function get_playlists(){
$data = file_get_contents("http://gdata.youtube.com/feeds/api/playlists/C82EBDAC0429B6A2?                      orderby=published&max-results=12");
$xml = simplexml_load_string($data);

foreach($xml->entry as $playlist){
$media = $playlist->children('http://search.yahoo.com/mrss/');
$attrs = $media->group->thumbnail[1]->attributes();
$thumb = $attrs['url'];
$attrs = $media->group->player->attributes();
$video = $attrs['url'];
$title = substr( $media->group->title, 27);
$url = $video;

parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );
$vid_Id = $my_array_of_vars['v'];

$thumbnail .= '<div style="float:left; cursor:pointer;">
<p class="crop"><a class="videobox various iframe" href="http://www.youtube.com/embed/' .         $vid_Id . '?autoplay=1&hd=1"><img src="' .$thumb . '" title="' . $title . '" width="74"         height="56"/></a></p></div>';
}print $thumbnail;}
?>

【问题讨论】:

标签: php performance api caching youtube


【解决方案1】:

尝试使用memcached 并将加载的播放列表保存在那里

【讨论】:

  • 如果您的网站使用共享托管服务,那么您将无法访问 memcached
【解决方案2】:

设置每小时加载电影的 cron 作业。电影信息存储在数据库中。您可以避免每次都下载和解析 XML。对于基本的加速,它会很好。

【讨论】:

  • 如果您无法访问 crontab,那么更简单的变体是将播放列表放入带有时间戳的 D/B 中。始终从 D/B 中读取这些内容,如果年龄 > 1 小时,则刷新列表并更新表格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 2013-03-19
相关资源
最近更新 更多