Google Maps istekleri - HTTP coğrafi kodlama (> adres enlem, uzun) ters yapmak için PHP ve CURL kullanıyorum. Ben önde gelen bir hesabınız var, bu yüzden daraltma veya bloke edilmeksizin bir istekleri bir sürü yapabilirsiniz.
Ne yazık ki, ben bir performans sınırına ulaştınız. Biz ters kodlanmış gereken günlük yaklaşık 500.000 istekleri olsun.
Kod zaman ve yerden tasarruf uğruna (I pseudo-kod parçaları yazacağım) oldukça saçmadır. Aşağıdaki kod parçası, bir işi aracılığıyla her 15 saniyede denir.
<?php
//get requests from database
$requests = get_requests();
foreach($requests as $request) {
//build up the url string to send to google
$url = build_url_string($request->latitude, $request->longitude);
//make the curl request
$response = Curl::get($url);
//write the response address back to the database
write_response($response);
}
class Curl {
public static function get($p_url, $p_timeout = 5) {
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, $p_url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, $p_timeout);
curl_setopt($curl_handle, CURLOPT_TIMEOUT, $p_timeout);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl_handle);
curl_close($curl_handle);
return $response;
}
}
?>
Performans sorunu CURL istekleri gibi görünüyor. Onun tam bir HTTP isteğinde her işlemlerini yapmak muhtemelen çünkü, son derece yavaş. Biz bir 100Mbps bağlantı var, ama tam hızda çalışan script sadece 1Mbps hakkında kullanmaktadır. Sunucudaki yükü aslında hiçbir şey değildir. Sunucu belleği 8GB ile, bir dört çekirdekli olduğunu.
Biz bu iş verimini arttırmak için ne şeyler yapabilirim? Google Maps ile kalıcı bir (canlı tutma) HTTP isteği açmak için bir yolu var mı? Nasıl 50 eşzamanlı istekleri yaparak, yani yatay çalışmaları patlayan hakkında?
Teşekkürler.