2009-05-31 4 views
3

は、私はいくつかの気象データを奪うと私のウェブサイト上でそれを利用できるようにするまで書かれたこのコードを持っている:このPHP/XML関数をウェブサイトに実装する理想的な方法は何ですか?

if(! $xml = simplexml_load_file('http://www.weather.gov/data/current_obs/KBED.xml')) 
{ 
    echo 'unable to load XML file'; 
} 
else 
{ 
    $temp = $xml->temp_f.' Degrees'; 
    $wind = $xml->wind_mph; 
    $wind_dir = $xml->wind_dir; 
    $gust = $xml->wind_gust_mph; 
    $time = $xml->observation_time; 
    $pres = $xml->pressure_in; 
    $weath = $xml->weather; 
} 

をそして私はちょうど私が内部にそれらをしたいタグの内部でそれらをエコーし​​ます。私のサイトはトラフィックが少ないですが、私がトラフィックを増やすためには、このようなことを「最良の」方法で行うことが何であるか不思議です。毎回サーバーにpingを保存するためにcronジョブを使用して毎時(XMLが更新されるとき)データベースに書き込むべき変数を書き込むべきでしょうか、それとも悪い習慣ではないでしょうか?私はこれがちょっと主観的だと理解していますが、私には "最良の方法"を求める誰もいません。ありがとう!!

答えて

1
  • 定期的にXML文書をフェッチして解析し、変数をデータベースに格納するようにcronジョブを設定します。
  • ページが要求されると、データベースから変数を取得し、ページをレンダリングします。
  • 天気予報Webサイトがダウンしているため、データが古くなったときにわかるように、最終更新のタイムスタンプもデータベースに保存することをお勧めします。

この設定は非常に合理的です。

+0

また、毎回他のサーバーにpingを実行すると「無礼」なのか、そうでなければ非効率なのでしょうか? –

+0

は、TOSによって異なります。しかし、彼らは解析可能なXMLフィードを提供しているので、特にこれをまれに行うのであれば、これでOKです。 1時間に一度合理的でなければならない。再度、ウェブサイトのTOSを最初にチェックすることは良い考えです。 –

+0

しかし、私は今それを持っているので、確かにすべてのページの読み込みをpinging?それは多くのようですが、高負荷のサーバーを管理したことはありません、私は迷惑と何が迷っているのかわかりません... –

0

外部サイトの出力をキャッシュし、自動的に5〜10秒ごとに更新させることができます。それはあなたのサイトからの多くの「ping」の影響を殺します。タイミングの正確さが顧客/クライアントにとってどれほど重要であるかにかかっています。

トラフィックが多い状況では、デーモンまたはcronジョブを実行し、指定された間隔ごとに天気をフェッチし、完了したら公開Webサイトのページを上書きする別のスクリプトが必要になります。こうすることで、バックグラウンドタスクのようにキャッシングを心配する必要はなく、訪問者は単にWebサーバーから静的なページにアクセスしているだけです。これはまた、方程式にデータベースを組み込む必要性を避けるか、少なくとも最小限に抑え、かなり軽量です。

欠点として、2番目の障害点が発生し、ページアクセス時に正確な情報が必要な場合は、かなり役に立たなくなる可能性があります。

2

私は次のことをお勧めします:

  • あなたが最初に、XMLの内容を取得し、それを解析し、何らかの方法でファイルに添付のタイムスタンプで、それをファイルにシリアライズする場合(おそらくとしてシリアル化されたデータ構造の一部)

  • ページが読み込まれるたびに、そのシリアル化されたデータを取得し、タイムスタンプをチェックします。特定のポイントを通過した場合は、xmlをもう一度取得してキャッシュし、タイムスタンプを更新してください。そうでない場合は、そのデータを使用してください。動作するはず

、あなたはたまにしかXMLを取りに行くために、キャッシュの有効期限が切れた後も、あなたは誰がされていないにもかかわらず、それを定期的に行くと取得の廃棄物を持っていない持っていることを意味訪問しています(リクエストでのみ更新されるため)。

+0

このアプローチには欠点があります。キャッシュの更新が必要なときにページの読み込みが遅くなります。 –

+1

XMLからの応答を許可しても、十分に迅速で予防的ではありません。つまり、cronジョブの弱いリンクやデータベース接続は必要ありません。 – Kazar

関連する問題