Dans PHP, la fonction date_sunset () peut facilement calculer l'heure du coucher du soleil d'une date et d'un lieu spécifiques. Cette fonction est particulièrement importante dans les sites Web qui doivent afficher des informations liées à Rizhao, telles que les sites Web météorologiques, les sites Web de services de voyage, etc.
Cependant, chaque appel de date_sunset () nécessite des calculs astronomiques complexes. Si votre site Web a un grand nombre de visites et appelle fréquemment cette fonction, il peut avoir un certain impact sur les performances du serveur. Afin d'optimiser, nous pouvons combiner une technologie de mise en cache simple pour réduire les calculs en double et améliorer considérablement la vitesse de réponse du site Web.
Cet article expliquera comment utiliser date_sunset () et combiner la technologie de mise en cache pour créer une requête de temps de coucher de soleil haute performance.
Regardons d'abord un exemple de base:
<?php
$date = strtotime('today');
$latitude = 40.7128; // Latitude de New York
$longitude = -74.0060; // Longitude de New York
$sunset = date_sunset($date, SUNFUNCS_RET_STRING, $latitude, $longitude, 90, date('Z') / 3600);
echo "Le temps du coucher du soleil d'aujourd'hui est:$sunset";
?>
Le code ci-dessus reviendra au coucher du soleil d'aujourd'hui à New York, comme 19:45 .
Supposons que la page de votre site Web recalcule l'heure du coucher du soleil chaque fois qu'elle est actualisée, même dans la même ville ou le même jour, ce qui provoquera un gaspillage inutile des ressources du serveur.
En fait, l'heure du coucher du soleil au même endroit et le même jour est fixée. Par conséquent, nous pouvons stocker les résultats du cache après le premier calcul. La prochaine fois que vous demanderez, le cache est lu directement et ne soit plus des calculs répétés.
L'exemple suivant montre comment utiliser la mise en cache des fichiers:
<?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;
}
// Exemple d'utilisation
$latitude = 34.0522; // Los Angeles Latitude
$longitude = -118.2437; // Los Angeles Longitude
$sunset = getSunsetTime($latitude, $longitude);
echo "Temps de coucher du soleil de Los Angeles d'aujourd'hui:$sunset";
?>
La logique de ce programme est:
Vérifiez si le répertoire de cache existe et créez-le s'il n'existe pas.
Générez des noms de clés mis en cache en fonction de l'emplacement et de la date.
Si le fichier de cache existe, lisez-le directement.
S'il n'existe pas, appelez date_sunset () pour le calculer et le stocker dans le cache.
Grâce à cette méthode, le même emplacement n'est calculé qu'une seule fois le même jour, réduisant considérablement le fardeau sur le serveur.
Si vous souhaitez que les utilisateurs interrogent dynamiquement les temps de coucher du soleil dans différentes villes via URL, vous pouvez le faire:
<?php
$latitude = isset($_GET['lat']) ? floatval($_GET['lat']) : 0;
$longitude = isset($_GET['lon']) ? floatval($_GET['lon']) : 0;
if ($latitude === 0 || $longitude === 0) {
echo "Veuillez passer URL Les paramètres fournissent la latitude et la longitude,Par exemple:https://m66.net/sunset.php?lat=40.7128&lon=-74.0060";
exit;
}
$sunset = getSunsetTime($latitude, $longitude);
echo "L'heure du coucher du soleil pour l'emplacement de l'interrogation est:$sunset";
?>
Par exemple, visitez le lien:
https://m66.net/sunset.php?lat=48.8566&lon=2.3522
Vous pouvez consulter le coucher du soleil à Paris aujourd'hui.
Date_sunset () est un outil puissant intégré à PHP, mais s'il est fréquemment utilisé sans optimisation, il peut facilement affecter les performances. En utilisant le cache raisonnablement (même les caches de fichiers simples), la surcharge de calcul peut être considérablement réduite.
Pour améliorer encore les performances, vous pouvez considérer:
Utilisez Redis ou Memcached pour remplacer le cache de fichier
Définissez un mécanisme de défaillance du cache raisonnable (comme la compensation des caches expirés chaque jour)
Générer des données de coucher de soleil pour les villes communes à l'avance
L'utilisation rationnelle du cache est une étape clé pour rendre l'accès à votre site Web rapidement et stable!