业务逻辑:
逐行读取一个3.6MB的文件,
把每行的字符串切割成数组,
计算二维数组中的经纬度值与目标地点的经纬度的距离,
符合限定距离范围的结果存入map中,
将结果覆盖写入一个新的文件,
计算程序执行的时间。
$stime=microtime(true);
const BJ_LAT = 39.9041999;const BJ_LNG = 116.4073963;const DISTANCE = 100;$handle = fopen('air_route_data.txt','rb+');
$result = [];
while(!feof($handle)){
$lines = fgets($handle);
$airRoute = explode(' ',$lines);
$lat = (float)$airRoute[3];
$lng = (float)str_replace(array("rn", "r", "n"), "", $airRoute[4]);
$distance = getDistance($lat,$lng);
if ($distance <= DISTANCE){
$result[$airRoute[2]] = ['lat'=>$lat,'lng'=>$lng ];
}}fclose($handle);
$jsonString = json_encode($result,JSON_UNESCAPED_UNICODE);
file_put_contents('bjs_route_data.txt',$jsonString);
//$handle2 = fopen('bjs_route_data.txt'