0

ローカル コンピューターで php を実行しています。ローカル コンピューターには heidisql もあります。digitalocean にサーバーをセットアップしたところ、mysql がインストールされています。ローカル マシンで PHP を使用してクエリを実行する7.81と、ページがクエリを実行するのに約数秒かかります。クエリを heidisql にコピーすると、同じクエリの実行0.141に数秒かかります。PHP が遅くなる原因は何ですか?

注:デジタル オーシャンに切り替える前に、PHP バージョンは約11 秒で実行され、php は変更されていません。

私が実行しているPHPは次のとおりです。

$db = new Database();

$start = microtime(true);

$db->query("
set @miles = 10;

select
@lat := latitude,
@lon := longitude,
@city := accent,
@country := country,
#@region := region,
@city_id := cc.city_id
from cities cc
inner join countries c on cc.country_id = c.country_id
inner join regions r on cc.region_id = r.region_id and c.country_id = r.country_id
left join locations l on cc.city_id = l.city_id
where city = 'rosemount' and country = 'us' and r.region = 'mn'
limit 1;
");

$cities = $db->getAll("
SELECT c.city_id as id, 
accent as city, 
country as country, 
region, 
latitude, 
longitude,
distance(@lat, @lon, latitude, longitude) as `distance`,
direction(@lat, @lon, latitude, longitude) `direction`
FROM locations l
inner join cities c on l.city_id = c.city_id
inner join regions r on c.region_id = r.region_id
inner join countries cu on c.country_id = cu.country_id
WHERE MBRContains(
    LineString(
        Point(
            @lat + @miles / 68.703, 
            @lon + @miles / (68.703 / COS(RADIANS(@lat)))
        ), 
        Point(
            @lat - @miles / 68.703, 
            @lon - @miles / (68.703 / COS(RADIANS(@lat)))
        )
    ), location)
and l.city_id != @city_id
order By `distance`
");

echo "<p>" . round(microtime(true) - $start, 2) . "</p>";

echo "<pre>";
print_r($cities);
echo "</pre>";
4

0 に答える 0