PHP图像服务器脚本返回损坏的图像

时间:2013-06-17 19:57:47

标签: php tumblr fetch

我一直在创建一个用于推广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%的时间。

这里是否存在某种编程时序问题,或者这可能是服务器/环境的问题?任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

你正在逼迫PNG。你确定它总是一个人吗?尝试评论标题调用,然后查看它是否有效。

答案 1 :(得分:0)

我希望我可以添加评论而不是答案,因为这不是解决方案,但我的代表不够高。无论如何,这里有一些尝试用于调试的东西。

  1. 此页面上有很多内容。尝试制作一个单独的页面,只通过serve.php加载一系列图像,看看你是否遇到同样的问题。

  2. 您正在本地保存这些文件。查看您在服务器上保存的文件,看看它们是否都包含真实图像,或者其中一些是空白还是不会呈现。

  3. 如果将文件保存到可从Web访问的目录中,请尝试使脚本直接重定向到图像。你显然不希望以这种方式生存,但它可能会帮助你找出PHP脚本读取和提供图像文件的问题。

  4. 希望我能得到更多帮助。

答案 2 :(得分:0)

起初我遇到了你描述的问题,但过了一会儿就消失了,现在所有照片都加载了。也许清除你的缓存?

答案 3 :(得分:0)

修复了这个问题,只是不经常调用save / serve脚本,因此在这一点上它很少成为非问题。