PHPでは、 date_sunset()関数は、特定の日付と場所の日没時間を簡単に計算できます。この機能は、天気のWebサイト、旅行サービスWebサイトなど、Rizhaoに関連する情報を表示する必要があるWebサイトで特に重要です。
ただし、 date_sunset()の各呼び出しには、複雑な天文計算が必要です。あなたのウェブサイトに多数の訪問があり、頻繁にこの関数を呼び出す場合、それはサーバーのパフォーマンスに特定の影響を与える可能性があります。最適化するために、シンプルなキャッシュテクノロジーを組み合わせて重複計算を削減し、ウェブサイトの応答速度を大幅に向上させることができます。
この記事では、date_sunset()を使用し、キャッシュテクノロジーを組み合わせて高性能のサンセットタイムクエリを作成する方法について説明します。
まず、基本的な例を見てみましょう。
<?php
$date = strtotime('today');
$latitude = 40.7128; // ニューヨーク市の緯度
$longitude = -74.0060; // ニューヨーク市の経度
$sunset = date_sunset($date, SUNFUNCS_RET_STRING, $latitude, $longitude, 90, date('Z') / 3600);
echo "今日の夕日はです:$sunset";
?>
上記のコードは、 19:45などのニューヨーク市で今日の夕日の時間を返します。
あなたのウェブサイトのページが、同じ都市や同じ日であっても、リフレッシュするたびに日没の時間を再計算すると仮定します。
実際、同じ場所と同じ日の日没時間が固定されています。したがって、結果を最初の計算後にキャッシュに保存できます。次に要求するとき、キャッシュは直接読み取られ、繰り返される計算がなくなります。
次の例は、ファイルキャッシュの使用方法を示しています。
<?php
function getSunsetTime($latitude, $longitude) {
$cacheDir = __DIR__ . '/cache/';
if (!is_dir($cacheDir)) {
mkdir($cacheDir, 0777, true);
}
$cacheKey = md5($latitude . '_' . $longitude . '_' . date('Y-m-d')) . '.txt';
$cacheFile = $cacheDir . $cacheKey;
if (file_exists($cacheFile)) {
$sunset = file_get_contents($cacheFile);
} else {
$date = strtotime('today');
$sunset = date_sunset($date, SUNFUNCS_RET_STRING, $latitude, $longitude, 90, date('Z') / 3600);
file_put_contents($cacheFile, $sunset);
}
return $sunset;
}
// 使用の例
$latitude = 34.0522; // ロサンゼルスの緯度
$longitude = -118.2437; // ロサンゼルス経度
$sunset = getSunsetTime($latitude, $longitude);
echo "今日のロサンゼルスサンセットタイム:$sunset";
?>
このプログラムのロジックは次のとおりです。
キャッシュディレクトリが存在するかどうかを確認し、存在しない場合は作成します。
場所と日付に基づいてキャッシュされたキー名を生成します。
キャッシュファイルが存在する場合は、直接読み取ります。
存在しない場合は、 date_sunset()を呼び出して、キャッシュに計算して保存します。
この方法により、同じ場所が同じ日に1回のみ計算され、サーバーの負担が大幅に減少します。
ユーザーにURLを介してさまざまな都市のサンセットタイムを動的に照会したい場合は、これを行うことができます。
<?php
$latitude = isset($_GET['lat']) ? floatval($_GET['lat']) : 0;
$longitude = isset($_GET['lon']) ? floatval($_GET['lon']) : 0;
if ($latitude === 0 || $longitude === 0) {
echo "合格してください URL パラメーターは緯度と経度を提供します,例えば:https://m66.net/sunset.php?lat=40.7128&lon=-74.0060";
exit;
}
$sunset = getSunsetTime($latitude, $longitude);
echo "クエリの場所の日没時間はです:$sunset";
?>
たとえば、リンクにアクセスしてください。
https://m66.net/sunset.php?lat=48.8566&lon=2.3522
今日はパリの夕日をチェックできます。
date_sunset()はPHPで構築された強力なツールですが、最適化なしで頻繁に使用される場合、パフォーマンスに簡単に影響を与える可能性があります。キャッシュを合理的に(単純なファイルキャッシュでさえ)使用することにより、計算オーバーヘッドを大幅に削減できます。
パフォーマンスをさらに向上させるために、次のことを考慮することができます。
RedisまたはMemcachedを使用してファイルキャッシュを置き換えます
合理的なキャッシュ障害メカニズムを設定します(毎日有効期限が切れたキャッシュのクリアなど)
一般的な都市の日没データを事前に生成します
キャッシュの合理的な使用は、あなたのウェブサイトへのアクセスを迅速かつ安定させるための重要なステップです!