私は、できればPHPを使用して、最新のプロジェクトで機能を作成することを目指しています。各ユーザーがサインアップするときに、郵便番号を入力します。次に、OpenStreetMapを使用してこれを緯度/経度に変換することを願っています。
とにかく、現在のユーザーの近くにいる他のユーザーを見つけられるようにしたいと思います。多くの人がHaversineの公式を使用しているのを見てきましたが、これは、ユーザーが他のすべてのユーザーの詳細を照会して距離を計算することを意味します。これをキャッシュすることはできますが、新しいユーザーがサインアップするとすぐに古くなります。
次のクエリを実行すると、システムにどのような影響がありますか?
sql = "SELECT zipcode, ( 3959 * acos( cos( radians( {$coords['latitude']} ) )
* cos( radians( latitude ) ) * cos( radians( longitude )
- radians( {$coords['longitude']} ) )
+ sin( radians( {$coords['latitude']} ) ) * sin( radians( latitude ) ) ) )
AS distance FROM zipcodes HAVING distance <= {$radius} ORDER BY distance";
それは誰かのブログから引き出されたものです。
まだ開発中なので、登録率や利用者数はわかりません。
特定の半径内で一致するユーザーを見つけるために使用できるフィードバックやその他の方法をいただければ幸いです。