简体   繁体   中英

PHP crashes on mysql loop when calling google directions api

I am running the following function within a MySQL search query which generally find around 100 results. the function retrieves distance between two location using google api.

the problem looks like the loop is crashing the script anything over 10 results.

is there any way to fix this issue?

pause for the google call back?

any suggestion helpful.

function get_driving_information($start, $finish, $raw = false)
{
    if(strcmp($start, $finish) == 0)
    {
        $time = 0;
        if($raw)
        {
            $time .= ' seconds';
        }

        return array('distance' => 0, 'time' => $time);
    }

    $start  = urlencode($start);
    $finish = urlencode($finish);

    $distance   = 'unknown';
    $time       = 'unknown';

    $url = 'http://maps.googleapis.com/maps/api/directions/xml?origin='.$start.'&destination='.$finish.'&sensor=false';
    if($data = file_get_contents($url))
    {
        $xml = new SimpleXMLElement($data);

        if(isset($xml->route->leg->duration->value) AND (int)$xml->route->leg->duration->value > 0)
        {
            if($raw==true)
            {
                $distance = (string)$xml->route->leg->distance->text;
                $time     = (string)$xml->route->leg->duration->text;
            }
            if($raw=="miles")
            {
                $distance = (string)$xml->route->leg->distance->value / 1000 / 1.609344;
                $distance = number_format($distance,1)." miles";
                $time     = (string)$xml->route->leg->duration->text;
            }
            else
            {
                $distance = (int)$xml->route->leg->distance->value / 1000 / 1.609344; 
                $time     = (int)$xml->route->leg->duration->value;
            }
        }
        else
        {
            throw new Exception('Could not find that route');
        }

        //return array('distance' => $distance, 'time' => $time);
        return $distance;
    }
    else
    {
        throw new Exception('Could not resolve URL');
    }
}

每秒有10个请求,请在此处查看有关限制的更多信息: https : //developers.google.com/maps/documentation/directions/usage-limits

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM