1

我一直在开发一个用于推广 Tumblrs 的网站。我刚刚创建了我的第一个 PHP 图像服务器脚本,这样我们就可以保存 Tumblr 头像并减少那些讨厌的 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

4 回答 4

1

您正在强制使用PNG。你确定它总是一个png吗?尝试注释掉标头调用,然后看看它是否有效。

于 2013-06-17T20:02:05.763 回答
0

通过简单地不经常调用保存/服务脚本来解决该问题,因此在这一点上它很少成为非问题。

于 2013-06-18T16:40:12.063 回答
0

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

于 2013-06-18T04:13:10.963 回答
0

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

  1. 这个页面上发生了很多事情。尝试制作一个单独的页面,只通过serve.php加载一系列图像,看看你是否有同样的问题。

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

  3. 如果将文件保存到可从 Web 访问的目录中,请尝试使脚本直接重定向到图像。您显然不想以这种方式进行直播,但它可能会帮助您了解 PHP 脚本读取和提供图像文件是否存在问题。

希望我能提供更多帮助。

于 2013-06-17T20:44:19.150 回答