1

現在の天気予報を読み込むことができるphpスクリプトを作成しようとしていますが、XMLの前処理を少し使用して入力をダイジェストしますが、頻繁にアクセスされて再読み込みされます。問題は私の現在のホストから始まります。そうです、その理由は理解できますが、スクリプトが使用する処理能力の量が制限されます。

現在、実行ごとにプロセス全体が必要です。これは、実行ごとに約3秒です。私は12に制限されていますが、かなりの数のpingを受け取ります。

皆さんへの私の質問は、スクリプトの出力をキャッシュして、5分前にすでに行ったことを前処理する必要がないようにするためにどのような方法を使用できるかということです。天気ですので、最大2時間の時差があります。

私もphpに精通しているので、xDについて心配する必要はありません。

〜ありがとう、ジョニー:D

4

4 に答える 4

2

天気予報データを生成するcronジョブを実行して、キャッシュからすべてを表示することができます。APCを使用して、常にメモリにロードされるようにすることができます(さらに他のすべての追加の利点)。

于 2009-09-30T23:30:53.567 に答える
1

Zend Frameworkは、Zend_Cacheオブジェクトに複数のバックエンド(File、memcached、APD)を提供します。または、次のようなもので自分自身をロールバックすることができます:

$cachFile = "/path/to/cache/file";
$ttl = 60; // 60 second time to live
if (!file_exists($cacheFile) || time()-filemtime($cacheFile) > $ttl) {
    $data = getWeatherData(); // Go off and get the data
    file_put_contents(serialize($cacheFile), $data);
} else {
    $data = unserialize(file_get_contents($cacheFile));
}
于 2009-09-30T23:36:06.803 に答える
0

実行している処理の種類を確認するには、コードスニペットが必要です。xdebugを使用して、コードをより適切に最適化することを検討してください。また、ABなどのベンチマークツールを使用して、サーバーが処理できるプロセスの数を確認することもできます。

利用可能なキャッシュメカニズムにはいくつかの異なるものがありますが、実行しているプロセスの種類を確認しないと、言うのは難しいです...

于 2009-09-30T23:30:42.163 に答える
0

すでに尋ねたように、3秒は非常に長い実行時間です。「入力」をどのように処理し、どの形式で入力が行われるかを確認すると、多少の寒さがあります。

スクリプトからファイルへのキャッシュアウトに関する簡単で汚い記事はここにあります:

http://codestips.com/?p=153

于 2009-09-30T23:34:56.087 に答える