2016-09-06 9 views
1

管理インターフェースにウィジェットがたくさんあります。管理インターフェースがどのようにコード化されているかに基づいて、60秒ごとにリロードされます。天気のために1分間にあまりにも多くのAPiコールがあります。気象ウィジェットだけを変更するにはリフレッシュレートがかなりかかるので、openweathermap.orgから60分ごとにデータをコピーして、私のWeatehrウィジェットでアクセスできるローカルjsonにデータを配置すれば、非常に多くのAPIコールを外部ソースに送ります。外部のjsonデータをコピーしてローカルのjsonファイルに貼り付けます

jquery、javascriptまたはphpを使用して、次のようなデータをWebサイトアドレスからローカルJSONファイルにコピーするにはどうすればよいですか?

{"coord":{"lon":-0.13,"lat":51.51},"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}],"base":"cmc stations","main":{"temp":296.2,"pressure":1023,"humidity":69,"temp_min":294.82,"temp_max":297.15},"wind":{"speed":1.5},"clouds":{"all":75},"dt":1473178865,"sys":{"type":1,"id":5091,"message":0.0074,"country":"GB","sunrise":1473139361,"sunset":1473186795},"id":2643743,"name":"London","cod":200} 
+0

あなたはjavascriptを使用してjsonファイルを書きますか? – brk

+0

は角度を使用するか、またはそれに対して反応します。 –

+0

@ user2181397はい外部ソースからデータをコピーして、jsonファイルに書き込みます。私はJSを使用することができますが、私はajaxやPHPを使用することができるかもしれない疑いがあります。 – Nxlevel

答えて

2

私はAPIを介して気象データを取得するために60秒ごとに実行するスケジュールされたタスクは、ローカルファイルにデータを保存し、そのファイルから読み込むには、adminインタフェースをリダイレクトし、ないのAPIを作成することをお勧めします

cronジョブを使用すると、apiからデータを取得するためのスケジュールされたタスクを作成できます。

PHPを使用して気象データをAPIから取得し、その結果をテキストファイルに保存するためのサンプルコードです。

<?php 

$curl = curl_init(); 

curl_setopt_array($curl, array(
    CURLOPT_URL => "http://api.openweathermap.org/data/2.5/forecast/city?id=524901&APPID=79191467e423ba376b1b72529788eeb8", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => "", 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "GET", 
)); 

$response = curl_exec($curl); 
$err = curl_error($curl); 

curl_close($curl); 

if ($err) { 
    echo "cURL Error #:" . $err; 
} else { 

    $weather_data = ($response); 
    // save $weather_data to local file 
    $file = 'weather_data.txt'; 

    // Write the contents to the file 
    file_put_contents($file, $weather_data); 
} 
+0

あなたは明らかに私の質問を正しく読まず、何かを投稿したがっていました。私も60分ではなく60分が必要です。あなたは本質的に私がすでに示したすべてを繰り返しました。あなたは私の質問で要求された適切な解決策を提供していません。私はあなたのポストにフラグを立てます! – Nxlevel

+0

申し訳ありませんが、データを取得してファイルに保存するためのサンプルコードを投稿に追加しました – developer

+0

提供されたコードを使用してファイルが保存されましたが、データはありません。 – Nxlevel

0

たぶん、あなたは、ブックマークレットを使用したい:

javascript:(function() { 


function httpGet() 
{ 
    if (window.XMLHttpRequest) 
    { 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    var theUrl = "http://api.openweathermap.org/data/2.5/weather?q=London"; 

    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
      saveTextAsFile(xmlhttp.responseText); 
     }; 
    }; 
    xmlhttp.open("GET", theUrl, false); 
    xmlhttp.send();  
} 



function saveTextAsFile(textToSave) 
{ 


    var textToSaveAsBlob = new Blob([textToSave], {type:"text/plain"}); 
    var textToSaveAsURL = window.URL.createObjectURL(textToSaveAsBlob); 
    var fileNameToSaveAs = "weather.json"; 

    var downloadLink = document.createElement("a"); 
    downloadLink.download = fileNameToSaveAs; 
    downloadLink.innerHTML = "Download File"; 
    downloadLink.href = textToSaveAsURL; 
    downloadLink.onclick = destroyClickedElement; 
    downloadLink.style.display = "none"; 
    document.body.appendChild(downloadLink); 

    downloadLink.click(); 
} 

function destroyClickedElement(event) 
{ 
    document.body.removeChild(event.target); 
} 




httpGet(); 

})(); 

をするだけhttp://api.openweathermap.orgをロードした後、それを呼び出す(またはコードでそれをロード含める。)とスクリプトのURLであなたのAPIキーを追加します。 ..

+0

このコードは、ファイルの作成とダウンロードをコンパイルすることによって動作します。しかし、実際に私のサーバー上のディレクトリにファイルを保存するにはどうすればいいですか? – Nxlevel

+0

これは、使用しているブラウザのビットによって異なります。 1つの方法は、ブラウザのダウンロードフォルダを、JSONファイルが配置される(多分マウントされた)フォルダに切り替えることです。 – Maksim

関連する問題