Avec le développement de l’Internet mobile et la demande croissante de recommandations personnalisées, les systèmes de recommandation basés sur la localisation en temps réel deviennent de plus en plus importants. En tant que framework haute performance pour PHP, Workerman peut facilement créer un système de recommandation en temps réel. Cet article présentera principalement comment utiliser Workerman pour implémenter un système de recommandation basé sur la localisation en temps réel et fournira des exemples de code spécifiques.
Lors de la mise en œuvre d'un système de recommandation basé sur la localisation en temps réel, nous devons prendre en compte les questions suivantes :
(1) Comment obtenir les informations de localisation de l'utilisateur ?
(2) Comment stocker les informations de localisation dans la base de données ?
(3) Comment calculer la distance entre deux utilisateurs ?
(4) Comment mettre à jour les résultats recommandés en temps réel ?
Pour résoudre les problèmes ci-dessus, nous pouvons adopter l'architecture système suivante :
(1) Utilisez l'API de géolocalisation de HTML5 pour obtenir les informations de localisation de l'utilisateur.
(2) Stockez les informations de localisation dans la base de données MySQL.
(3) Calculez la distance entre deux utilisateurs en utilisant la formule haversine.
(4) Calculez les résultats des recommandations en temps réel côté serveur et retournez-les au client.
Tout d'abord, nous devons utiliser l'API de géolocalisation en HTML5 pour obtenir les informations de localisation de l'utilisateur :
if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else { alert("Geolocation API is not supported in your browser."); } function showPosition(position) { var lat = position.coords.latitude; var lng = position.coords.longitude; // 将经纬度发送到服务器端进行处理 var xhr = new XMLHttpRequest(); xhr.open("POST", "http://localhost:2345/savePosition.php", true); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.send("lat=" + lat + "&lng=" + lng); }
Ici, nous envoyons la longitude et la latitude au fichier savePosition.php côté serveur via un Requête POST pour traitement.
Côté serveur, nous pouvons utiliser la classe MySQL de Workerman pour stocker les informations de localisation dans une base de données MySQL :
require_once __DIR__ . '/vendor/autoload.php'; use WorkermanMySQLConnection; $db = new Connection('localhost', '3306', 'root', 'password', 'dbname'); $lat = $_POST['lat']; $lng = $_POST['lng']; $db->insert('user_position', array('lat' => $lat, 'lng' => $lng));
Ici, nous stockons les informations de localisation de l'utilisateur dans une table nommée user_position.
Pour calculer la distance entre deux utilisateurs, nous pouvons utiliser la formule haversine.
L'implémentation de la formule haversine est la suivante :
DELTA_LATITUDE = LATITUDE_B - LATITUDE_A DELTA_LONGITUDE = LONGITUDE_B - LONGITUDE_A a = sin(DELTA_LATITUDE/2)^2 + cos(LATITUDE_A) * cos(LATITUDE_B) * sin(DELTA_LONGITUDE/2)^2 c = 2 * atan2(sqrt(a), sqrt(1-a)) DISTANCE = EARTH_RADIUS * c
En PHP, le code pour implémenter la formule haversine est le suivant :
function haversineDistance($lat1, $lng1, $lat2, $lng2) { $earth_radius = 6371; $delta_latitude = deg2rad($lat2 - $lat1); $delta_longitude = deg2rad($lng2 - $lng1); $a = sin($delta_latitude / 2) * sin($delta_latitude / 2) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($delta_longitude / 2) * sin($delta_longitude / 2); $c = 2 * atan2(sqrt($a), sqrt(1 - $a)); $distance = $earth_radius * $c; return $distance; }
Grâce au code ci-dessus, nous pouvons calculer la distance entre deux utilisateurs, en fonction de la distance et les informations sur les intérêts et les loisirs de l'utilisateur. Nous pouvons calculer les résultats des recommandations en temps réel et les renvoyer au client. Le code est implémenté comme suit :
function getRecommendations($user_id, $lat, $lng) { $earth_radius = 6371; $max_distance = 20; $query = "SELECT id, lat, lng, interests FROM user_position WHERE id != '$user_id'"; $result = $db->query($query); $recommendations = array(); while ($row = mysqli_fetch_assoc($result)) { $distance = haversineDistance($lat, $lng, $row['lat'], $row['lng']); if ($distance <= $max_distance) { $interests = explode(",", $row['interests']); $common_interests = array_intersect($user_interests, $interests); if (count($common_interests) > 0) { $recommendations[] = $row['id']; } } } return $recommendations; }
Grâce à cet article, nous avons appris à utiliser Workerman pour implémenter un système de recommandation basé sur la localisation en temps réel et avons fourni des exemples de code spécifiques. Le système de recommandation en temps réel est une application très pratique et a de larges perspectives d'application dans le domaine de l'entreprise, des réseaux sociaux, etc. J'espère que cet article pourra vous aider à comprendre comment utiliser Workerman pour mettre en œuvre un système de recommandation en temps réel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!