我一直在创建一个用于推广Tumblrs的网站。我刚刚创建了我的第一个PHP Image Server脚本,这样我们就可以保存Tumblr Avatars并减少那些讨厌的Tumblr API调用。
我现在正在网站上工作,但是有一个奇怪的故障正在发生。当页面打开时,几乎总会有1或2个虚拟图像显示为损坏的图像。
有行为的网页:http://www.tumblrlink.com/
我知道这不是特定于特定帐户的,因为刷新页面通常会显示不同的图像集。
这是我构建的图像服务器脚本:
<?php
if (!isset($_GET['uri']))
exit();
$url = urldecode($_GET['uri']);
// Check to make sure API URL is passed.
if (strpos($url,'http://api.tumblr.com/') === FALSE)
exit();
// Get the User's Tumblr "Short Name"
$shortName = $url;
$shortName = str_replace('http://api.tumblr.com/v2/blog/','',$shortName);
$shortName = str_replace('/avatar/40','',$shortName);
$avatarLoc = '../../media/avatars/' . $shortName . '.png';
// Save the Avatar to the server for use.
if (!file_exists($avatarLoc)) {
copy($url, $avatarLoc);
}
// Write out the contents of the Avatar Image.
header("Content-Type: image/png");
header("Content-Length: " . filesize($avatarLoc));
readfile($avatarLoc);
exit();
?>
现在,正如您在链接上看到的那样,图像会被保存并成功提供...但只有90%的时间。
这里是否存在某种编程时序问题,或者这可能是服务器/环境的问题?任何帮助将不胜感激。
答案 0 :(得分:1)
你正在逼迫PNG。你确定它总是一个人吗?尝试评论标题调用,然后查看它是否有效。
答案 1 :(得分:0)
我希望我可以添加评论而不是答案,因为这不是解决方案,但我的代表不够高。无论如何,这里有一些尝试用于调试的东西。
此页面上有很多内容。尝试制作一个单独的页面,只通过serve.php加载一系列图像,看看你是否遇到同样的问题。
您正在本地保存这些文件。查看您在服务器上保存的文件,看看它们是否都包含真实图像,或者其中一些是空白还是不会呈现。
如果将文件保存到可从Web访问的目录中,请尝试使脚本直接重定向到图像。你显然不希望以这种方式生存,但它可能会帮助你找出PHP脚本读取和提供图像文件的问题。
希望我能得到更多帮助。
答案 2 :(得分:0)
起初我遇到了你描述的问题,但过了一会儿就消失了,现在所有照片都加载了。也许清除你的缓存?
答案 3 :(得分:0)
修复了这个问题,只是不经常调用save / serve脚本,因此在这一点上它很少成为非问题。