我的网站中有一个链接检测,可以将用户输入的链接转换为锚点,但我想限制不存在的垃圾链接的转换,我已经构建了以下
public function tLink($s){
$domain = preg_replace('/(http|ftp)+(s)?:('/'/)(('w|'.)+)('/)?('S+)?/i', ''4', $s);
getmxrr($domain,$result);
if(!empty($result)){
return preg_replace('/(http|ftp)+(s)?:('/'/)(('w|'.)+)('/)?('S+)?/i', '<a href="'0" title="'0">'4</a>', $s);
}
return $s;
}
但这让我的页面加载非常慢,加载需要2到5秒。(它们过去常常立即加载)。有没有更好的方法我可以用?
您可以缓存getmxrr
的输出,以确保您不会对已验证的域执行相同的操作。
假设您已经配置并安装了memcache。你可以用这个功能代替你的查找
function domain_found($domain) {
$memcache_obj = new Memcache;
$memcache_obj->connect('localhost', 11211);
$var = $memcache_obj->get($domain);
if ($var == "found") return true;
if ($var == "notfound") return false;
getmxrr($domain,$result);
if (empty($result)) {
$memcache_obj->put($domain, 'notfound');
return false;
} else {
$memcache_obj->put($domain, 'found');
return true;
}
}
当然,如果您愿意的话,您可以在类中处理这个问题,并优化其他值元素。这是一个概念验证代码。