我的网站中有链接检测,将用户输入的链接转换为锚点,但我想限制不存在的垃圾链接的转换,我已经构建了以下内容
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秒才能加载。 (他们过去常常加载)。我可以使用更好的方法吗?
答案 0 :(得分:1)
您可以缓存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;
}
}
如果您愿意,您可以在课堂内使用它,并优化其他价值元素。这可以作为概念证明代码。