gethostbyname : à oublier, préférez dig

gethostbyname sert à récupérer l’adresse IP d’un nom de domaine.
L’intention est bonne, et la fonction suffit pour quelques interrogations.
Mais si vous avez besoin de récupérer l’IP de plusieurs milliers de noms de domaines, oubliez tout de suite, préférez dig !

function gethost_fast($host) {
 // on lance dig, en demandant les champs A (ip) et on récupère la dernière valeur
 $ip = rtrim("/usr/bin/dig $host A +short | /usr/bin/tail -1");

// en cas de probleme
 if(
  (function_exists('filter_var') && !filter_var($ip,FILTER_VALIDATE_IP)) // filter_var = PHP > 5.2.0
  || !preg_match('#\d+(?:\.\d+){3}#i',$ip)) {
  $ip = @gethostbyname($host);
  }
 return $ip;
 }

Comptez 1 seconde pour environ 200 ndds avec dig … contre 100-200 secondes pour gethostbyname…

Une fonction magique pour développer avec WordPress

Voici la fonction à ajouter dans un plugin actif (ou dans votre functions.php de thème), pour permettre de débugger les filtres et actions WordPress :

<?php
function all_actions() {
 global $debug;
 if($debug) echo "\nfilter = ".current_filter();
 if(current_filter() != 'get_terms'  // trop de données
 &&  $debug) echo '<pre>'.print_r(func_get_args(),1).'</pre>'; 
}
add_action('all','all_actions'); >

Ensuite, il vous suffit, n’importe ou dans le code WordPress, de mettre :

<?php 
global $debug; $debug = true;
/*... une fonction ou une boucle dont vous voulez étudier le comportement...*/
$debug = false; ?>

L’action de debug vous affichera l’action ou le filtre lancé, et tous les arguments envoyés à ce filtre. Plus la peine de passer des heures dans le code à retrouver le bon filtre ou la bonne action à utiliser !

Basé sur le one-liner de DD32 :

<?php add_action('all', create_function('', 'var_dump(current_filter());')); ?>