-2

SmartFileを使用して、ユーザーが送信したファイルを保存しています。サイトに画像ファイルを表示するには、それらにリンクするだけで済みますが、ファイルが見つからない場合、代わりにデフォルトの画像を表示するオプションはありません。または、ホットリンクを防止します。または、ブラウザのキャッシュなどを設定します。

彼らの API は、1 分あたり 180 リクエストに制限されています。そのため、忙しいサイトで画像を表示するのには適していません。

get_headers予想されるファイルが存在するかどうかを確認し、存在する場合はを使用してみましfile_get_contentsたが、非常に遅く、非効率的です。file_get_contents最初に outを使用するだけでget_headersは非常に遅くなります!

ここで私の最良の選択肢は何ですか?まだ使ってみてcurlいません。これで1回のリクエストでヘッダーとファイルを取得できると思いますが、file_get_contents遅いので、curlはこれ以上速くはならないと思います。

4

2 に答える 2

0

別のサイトから画像を取得してみてください。はい、file_get_content を使用します

<?php 

if(!isset($_GET['read'])){
 $url = "http://mangaku.web.id/baca-komik-naruto-terbaru-bahasa-indonesia/"; 
 $input = @file_get_contents($url) or die("Could not access file: $url");
 $regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>"; 
 if(preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER)) {
 foreach($matches as $match) {
     if (strpos($match[2],'chapter')!== false OR strpos($match[3],'naruto-chapter')!== false) {
    echo "<a href='http://localhost/mangaku.php?read=".$match[2]."'>".$match[3]."</a><br>";
}
 } 
 }
}

 if(isset($_GET['read'])){
 $url = $_GET['read']; 
 $input = @file_get_contents($url) or die("Could not access file: $url");
 $regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>"; 
 if(preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER)) {
 foreach($matches as $match) {
     if (strpos($match[2],'bp.blogspot.com') !== false) {
  echo "<center><image src='".$match[2]."'></center><br>";
  //echo $match[2]."<br>";
}
 } 
 }
}
?>
于 2014-05-26T05:14:38.733 に答える
0

この読み込みとブラウザでの確認は JavaScript で行うことができます。したがって、アプリケーションはファイルへのリンクを渡すだけで、JavaScript が画像が存在するかどうかを確認している間、ユーザーは読み込み中の画像を確認できます。

jQuery を使用した例:

<img src="loading.gif">
<script>
    $.ajax({
        type: 'HEAD',
        url: 'http://example.com/image.jpg',
        success: function() {
            $('img').attr('src','http://example.com/image.jpg');
        },
        error: function() {

        }
    });
</script>

画像パスを非表示にする必要がない場合は、 file_get_contentsで画像を読み込む必要はありません。

画像アドレスをキャッシュするデータベース テーブルを作成することもできます。また、リンクがまだ機能しているか壊れているかを 1 時間ごとに確認してください。壊れている場合は、その画像への URL をデータベース内のmissing.jpgに変更します。

smartfileから DropBox やその他のサービスへの移行も検討できます。

于 2014-05-25T23:17:16.060 に答える