2013-05-30 3 views
0

У меня есть код, где я получаю домены из базы данных и передавая их через функцию PHP getmxrr. Затем я сохраняю результаты в базе данных. Но процесс идет очень медленно. Есть ли способ ускорить это?Speed ​​php getmxrr() функция для обработки миллионов записей

$stmt = $link->prepare($sql); 
$stmt->execute(); 
$row = $stmt->fetchAll(); 
foreach ($row as $value) { 
    $domain = $value[0]; 

    //getmxrr doesn't work without this 
    $string = preg_replace('/\s+/','',$domain); 

    if (getmxrr($string,$mxrecords)){   

     if(isset($mxrecords[0])){ 
     $mx = $mxrecords[0];} else $mx = "False"; 
    } 
    else{ 
     $mx = "NULL"; 
    } 
    $stmt1->execute(); //inserting the results in DB 

} 
+0

Сколько записей вы обрабатываете? и не могли бы вы определить «медленный», и уверены ли вы, что это не mysql, который работает медленно? –

+0

Я предполагаю, что проблема заключается в длительности запроса DNS. Попробуйте использовать другие (лучше кэширующие) DNS-серверы для ускорения повторных запросов. – Stasik

+0

От медленного я имею в виду около 1-2 запросов в секунду. @RyanNaddy – tgarg

ответ

0

Я предполагаю, что проблема заключается в длительности запроса DNS. Попробуйте использовать другие (лучше кэширующие) DNS-серверы для ускорения повторных запросов.

Во-первых, попробуйте изменить DNS-сервер вашей ОС на некоторые другие, возможно, на Google (8.8.8.8)? Следующим шагом является получение собственного кеша DNS, это зависит от ОС (например, для Ubuntu/Linux https://askubuntu.com/questions/22750/best-way-to-set-up-dns-caching).