dnslookup.php

function dnslookup($ip) {
    global $memcache;
    if(!is_resource($memcache)) {
        openMemCache();
    }
    if(is_resource($memcache)) {
        $dns = memcache_get($memcache, 'dns_'.$ip);
    }
    if(!empty($dns)) {
        return $dns;
    } else {
        $res = `nslookup -timeout=0 -retry=0 $ip`;
        $pos = strpos ( $res, "name = " );
        $out = substr ( $res, $pos + 7 );
        $pos = strpos ( $out, ".\n" );
        $out = substr ( $out, 0, $pos );
        if (strlen ( $out ) > 2) {
            if(is_resource($memcache)) {
                memcache_set($memcache, 'dns_'.$ip, $out, 0, 48*60*60); // Cache DNS for x hours
            }
            return $out;   
        } else {
            return 'Resolve faliure.';
        }
    }
}