我正在使用Zend_Gdata,如YouTube开发者API文档中所述,尝试简单地提取最新的两个带有缩略图的视频。不幸的是,它非常慢并且延迟了页面其余部分的加载,因此我不得不禁用此代码并放入静态 HTML。我在想也许它查询了太多数据,但我没有看到getuserUploads
的限制选项.我能想到的唯一其他解决方案是让它在页面加载后执行 AJAX 调用,但我仍然需要它更快。
如果使用XML会更快,有人可以指出我一些工作代码来获取标题,URL和缩略图吗?我首先找到并尝试的代码(使用简单的XML函数)根本不起作用。
以下是使用的代码很慢:
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_YouTube');
function printVideoFeed($videoFeed, $limit)
{
$count = 1;
foreach ($videoFeed as $videoEntry) {
if ($count > $limit) { break; }
echo "<li>";
printVideoEntry($videoEntry);
echo "</li>n";
$count++;
}
}
function getAndPrintUserUploads($userName)
{
//Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey);
$yt = new Zend_Gdata_YouTube(NULL, 'APPIDHERE', 'CLIENTNAMEHERE', 'ASDF-LONGDEVKEYHERE-TO-FIX-TOO-MANY-CALLS-PROBLEM');
$yt->setMajorProtocolVersion(2);
printVideoFeed( $yt->getuserUploads($userName), 2 );
}
function printVideoEntry($videoEntry)
{
// get all thumbnails. Use the 2nd one (index of 1 in array) that is 180px wide
$videoThumbnails = $videoEntry->getVideoThumbnails(); ?>
<div class="theimg">
<a href="<?php echo $videoEntry->getVideoWatchPageUrl(); ?>" target="_blank">
<img src="<?php echo $videoThumbnails[1]['url']; ?>" alt="" width="160" />
</a>
</div>
<span class="date">Video</span>
<h4><a href="<?php echo $videoEntry->getVideoWatchPageUrl(); ?>" target="_blank"><?php echo $videoEntry->getVideoTitle(); ?></a></h4>
}
getAndPrintUserUploads('USERNAMEHERE');
乍一看,你没有使用完整的Zend MVC模型,你可以用来提高性能的一些东西是发送处理VIEW的HTML的方法,并使用来自youtube的RSS提要来发出这个请求。