1

私は、Tumblr の宣伝に使用される Web サイトに取り組んできました。初めての PHP Image Server スクリプトを作成したので、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

0

これは解決策ではないので、回答の代わりにコメントを追加できたらいいのにと思いますが、私の担当者は十分に高くありません. とにかく、デバッグ目的で試すことがいくつかあります。

  1. このページでは多くのことが行われています。serve.php を介して一連の画像のみをロードする別のページを作成して、同じ問題があるかどうかを確認してください。

  2. これらのファイルをローカルに保存しています。サーバーに保存したファイルを見て、それらすべてに実際の画像が含まれているかどうか、またはそれらの一部が空白であるかレンダリングされないかどうかを確認してください。

  3. Web からアクセスできるディレクトリにファイルが保存されている場合は、スクリプトが画像に直接リダイレクトされるようにしてみてください。この方法でライブに移行したくないのは明らかですが、画像ファイルを読み取って提供する PHP スクリプトに問題があるかどうかを調べるのに役立つ場合があります。

もっとお役に立てれば幸いです。

于 2013-06-17T20:44:19.150 に答える
0

最初はあなたが説明した問題がありましたが、しばらくすると問題がなくなり、すべての写真が読み込まれるようになりました。多分あなたのキャッシュをクリアしますか?

于 2013-06-18T04:13:10.963 に答える