모바일 인터넷의 발달과 개인화된 추천에 대한 수요가 증가함에 따라 실시간 위치 기반 추천 시스템이 점점 더 중요해지고 있습니다. Workerman은 PHP를 위한 고성능 프레임워크로서 실시간 추천 시스템을 쉽게 구축할 수 있습니다. 이번 글에서는 주로 Workerman을 사용하여 실시간 위치 기반 추천 시스템을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.
실시간 위치 기반 추천 시스템을 구현할 때 고려해야 할 사항은 다음과 같습니다.
(1) 사용자의 위치 정보를 어떻게 얻을 수 있나요?
(2) 위치 정보를 데이터베이스에 저장하는 방법은 무엇입니까?
(3) 두 사용자 사이의 거리를 계산하는 방법은 무엇입니까?
(4) 추천 결과를 실시간으로 업데이트하는 방법은 무엇입니까?
위 문제를 해결하기 위해 다음과 같은 시스템 아키텍처를 채택할 수 있습니다.
(1) HTML5의 Geolocation API를 사용하여 사용자의 위치 정보를 얻습니다.
(2) MySQL 데이터베이스에 위치 정보를 저장합니다.
(3) 하버사인 공식을 사용하여 두 사용자 사이의 거리를 계산합니다.
(4) 추천 결과를 서버 측에서 실시간으로 계산하여 클라이언트에 반환합니다.
먼저 사용자의 위치 정보를 얻으려면 HTML5의 geolocation API를 사용해야 합니다.
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); }
여기서는 경도와 위도를 다음을 통해 서버 측의 savePosition.php 파일로 보냅니다. 처리를 위한 POST 요청입니다.
서버 측에서는 Workerman의 MySQL 클래스를 사용하여 위치 정보를 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));
여기서 사용자의 위치 정보를 user_position이라는 테이블에 저장합니다.
두 사용자 사이의 거리를 계산하기 위해 Haversine 공식을 사용할 수 있습니다.
haversine 수식의 구현은 다음과 같습니다.
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
PHP에서 haversine 수식을 구현하는 코드는 다음과 같습니다.
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; }
위 코드를 통해 거리를 기준으로 두 사용자 사이의 거리를 계산할 수 있습니다. 그리고 사용자의 관심분야, 취미정보 등을 바탕으로 추천 결과를 실시간으로 산출하여 고객에게 돌려드릴 수 있습니다. 코드는 다음과 같이 구현됩니다.
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; }
이 글을 통해 Workerman을 사용하여 실시간 위치 기반 추천 시스템을 구현하는 방법을 알아보고 구체적인 코드 예제를 제공했습니다. 실시간 추천 시스템은 매우 실용적인 응용 프로그램으로 비즈니스 분야, 소셜 네트워크 등 광범위한 응용 가능성을 가지고 있습니다. 이 기사가 Workerman을 사용하여 실시간 추천 시스템을 구현하는 방법을 이해하는 데 도움이 되기를 바랍니다.
위 내용은 Workerman을 사용하여 실시간 위치 기반 추천 시스템을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!