2017-10-21 11 views
-3

このコードを実行する5秒を必要とする時間がかかりすぎます。より良いパフォーマンスを得るためにはどうすればよいですか?まず、file_gets_contentを使用しましたが、もう少し時間がかかりました。私はURLに追加する姓と名を必要とするよう 私は名前を分割します。 URL = URL +姓+名。取得値は、

<form method='post' action='index.php'> 
    <input type='submit' name='submit'> 
</form> 

<?php 

    /* This is how the URL should look like 
    // $url = "http://api.suredbits.com/nfl/v0/stats/wagner/bobby"; 
    */ 
    $url = "http://api.suredbits.com/nfl/v0/stats/"; 

    if(isset($_POST['submit'])) { 
    $names = array(); 
    array_push($names, 'Bobby Wagner', 'Zach Brown', 'Mason Foster', 
        'Preston Smith', 'Josh Norman', 'Ryan Kerrigan', 
        'Earl Thomas', 'Richard Sherman', 'Chandler Jones', 
        'Marcus Peters'); 

    foreach($names as $n) { 
     $split_name = explode(" ", $n); 

     $url .= $split_name[1] . '/' . $split_name[0]; 

     //get json 
     $data = loadFile($url); 
     $json_data = json_decode($data, true); 

     echo $n . ' Tackles: ' . $json_data[0]["defense"]["tackle"]; 

     //reset url 
     $url = "http://api.suredbits.com/nfl/v0/stats/"; 

    } 


    } 

    function loadFile($url) { 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_URL, $url); 

    $data = curl_exec($ch); 
    curl_close($ch); 

    return $data; 
    } 
?> 
+0

です時間がかかります。手動で1つのクエリ(ブラウザまたは端末)を実行して、応答時間が長すぎるかどうかを確認してください。 –

+0

単一のクエリは、偶数秒を要しません。しかし、私は複数のプレイヤーを提示したいので、複数のクエリが必要です。おそらくAJAXの負荷を使用すると助けになるでしょうか? – Err404r

答えて

1

最初にPHPで外部リクエストを行っています。つまり、デフォルトでは、ターゲットサーバーから返信される時間に結びついています。そして、実際にはそれぞれの名前を要求します。これはあなたの接続に依存します。 http://sandbox.onlinephpfunctions.com/code/139050ebc5d12236ab5fa32165943ca4de027672

そして、これは結果であった:

Start (3.504753112793E-5) 

Before request to Bobby Wagner (4.7922134399414E-5) 
After request to Bobby Wagner (0.44589018821716) 

Before request to Zach Brown (3.0994415283203E-5) 
After request to Zach Brown (0.48834991455078) 

Before request to Mason Foster (4.6968460083008E-5) 
After request to Mason Foster (0.45868515968323) 

Before request to Preston Smith (3.6001205444336E-5) 
After request to Preston Smith (0.4740629196167) 

Before request to Josh Norman (4.2915344238281E-5) 
After request to Josh Norman (0.45651292800903) 

Before request to Ryan Kerrigan (4.1007995605469E-5) 
After request to Ryan Kerrigan (0.46689486503601) 

Before request to Earl Thomas (4.0054321289062E-5) 
After request to Earl Thomas (0.45992112159729) 

Before request to Richard Sherman (4.1007995605469E-5) 
After request to Richard Sherman (0.44616389274597) 

Before request to Chandler Jones (4.4107437133789E-5) 
After request to Chandler Jones (0.51626300811768) 

Before request to Marcus Peters (4.1007995605469E-5) 
After request to Marcus Peters (0.46067094802856) 

Total (4.6739158630371) 

あなたは、各要求することをここで見ることができ、それはここで見ることができるように、私は(唯一のPHPの一部)あなたのコードをテストしてみただけの場合には

約0.5秒かかります。 これは...これは何ですかあなたは10個のクエリをやっている問題で、この周りだけの仕事は、あなたがターゲット・サービス/サーバーを変更することができれば、代わりに1 1によって名前のリストを許可し、ある...

+0

Ty。あなたが言ったように、私はリストで新しいapiを見つけました。これは現在正常に動作しています。 – Err404r