2017-01-16 10 views
3

私はAPIを読み込むためのPHPスクリプトを持っています。それは機能的です。ただし、ロードには約15秒かかります。スクリプトの実行速度を向上させるための方法はありますか?より速く読み込むAPIをロードする私のPHPスクリプトを最適化する方法

HERESにPHP:

<?php 
error_reporting(0); 
$apikey = "apikey=***************************"; 
$json = file_get_contents("https://eu.api.battle.net/wow/guild/Vek'Nilash/Renascence?fields=news&locale=en_GB&".$apikey); 
$feed = json_decode($json); 
$feedcount = 0; 
foreach($feed->news as $newsfeed) { 
    if ($feedcount >= 8) { 
     break; 
    } 
    echo $newsfeed->character . PHP_EOL; 
    $type = $newsfeed->type; 
    // $iteminfo = $newsfeed->itemId . PHP_EOL; 
    $itemnumber = $newsfeed->itemId; 
    if ($type == "itemLoot"){ 
     echo " has looted:"; 
     $itemurl = file_get_contents("https://eu.api.battle.net/wow/item/$itemnumber?locale=en_GB&".$apikey); 
     $itemname = json_decode($itemurl); 
     echo " [" . $itemname->name . "]<br>"; 
    } 
    elseif ($type=="itemPurchase"){ 
     echo " has purchased:"; 
     $itemurl = file_get_contents("https://eu.api.battle.net/wow/item/$itemnumber?locale=en_GB".$apikey); 
     $itemname = json_decode($itemurl); 
     echo " [" . $itemname->name . "]<br>"; 
    } 
    elseif ($type=="playerAchievement"){ 
     echo " has Achieved:"; 
     echo " " . $newsfeed->achievement->title . "<br>"; 
    } 
    ++$feedcount; 
} 
?> 
+0

最初にあなたが答えなければならないのは、これに関連する時間は何ですか?次に、最適化するものを知っています。すぐに覚えているのは、httpリクエストです。それはどれくらいかかりますか?もう一つは、あなたが処理しなければならないレスポンスはどれだけ大きいのでしょうか?リクエストでフィルタリングして_less_情報を処理する必要があるかもしれません。 – arkascha

+0

それは論理的に聞こえる。私はそれをさらに調べます。ありがとうございました。 –

+0

あなたがそのネット上でゲームをプレイしたことがあるなら、あなたは確かに頻繁で予測できないゲームの遅れ(彼らのサーバまたはネットワーク、またはあなたのネットワーク)を認識しています。ループ中の 'file_get_contents'の貢献をプロファイリングしていない場合は、このスクリプトを最適化することを尋ねる暗闇の中で撮影しています。 – YvesLeBorg

答えて

1

転送されるデータが大きい場合は、PHPコードの上にこれを追加することによって、gzip圧縮を有効にしよう:

ob_start('ob_gzhandler'); 

それがない場合は場合、これらのリンクをチェックアウトし、持ち運びにくいが役に立つかもしれ:

PHP file_get_contents very slow when using full url

How to speed up file_get_contents?

+1

スクリプトの出力を圧縮するとパフォーマンスが向上しますか?このコードは、出力に最大で8行の2行のテキストのみが含まれていることを示しています。このような小さなペイロードを圧縮するのはほとんど意味がありません。さらに、f hatでもスクリプト自体のパフォーマンスを評価することはできません。 – arkascha

+1

答えの残りは、a)限られた品質のものです。これはリンクのみの回答であり、b)答えではなく野生のものです。 – arkascha

+0

取得されるJSONファイルの長さが2k行を超えています。誰かが正しい方向に私を指すことができるので、私はファイルの最初の数百行だけを取り出すことができますか?コピーして貼り付けるのではなく、勉強しようとしているので、ステップバイステップの回答を求めることはありません。 –

関連する問題