国强极客
有问题请加微信:guoqiang7585
国强极客

知梦采集问题

知梦采集问题

采集时提示读取网址失败

DEDECMS 设置采集规则时,保存测试时,提示读取测试网址失败,不能下载远程图片和资源,不能提取缩略图,是因为服务器上禁用了fsockopen() 与pfsockopen() 函数造成的,在用fsockopen()或fsockopen() 的地方用 stream_socket_client()代替就可以了。

具体修改地方是: /include/dedehttpdown.class.php 第507行

$this->m_fp = @fsockopen($this->m_host, $this->m_port, $errno, $errstr,10);

替换为

$this->m_fp = @stream_socket_client($this->m_host . ':' . $this->m_port, $errno, $errstr,10);

确定服务器是否禁用了fsockopen() 与pfsockopen() 函数,可以使用PHP探针查看服务器的信息,信息中会明确显示是否禁用了这两个函数的。

采集文章时相对路径问题

问题描述:
当采集目标文章中列表或者分页信息是绝对路径时,DEDE可以正确采集,例如:(jiaook.com/2012/331.html这样文章可以正确采集。
当采集目标文章中列表或者分页信息是相对路径,但是以 ‘/’开头(如 /2012/0328/1943.html)DEDE也可以正确采集。
当采集目标文章中列表或者分页信息是相对路径,但不是以 ‘/’开头(如 2012/0328/1943.html)DEDE就不能正确采集了。
这在我们平时做站的时候,涉及到SEO的一个问题,就是URL标准化,详细可以看看另一篇博文:SEO:什么是URL的标准化?
解决方案:
问题的根源出在 dedehtml2.class.php 中的 FillUrl 函数上,大概在394行左右:

if( strlen($surl) < 7 )
 {
     $okurl = $this->BaseUrlPath.'/'.$surl;
 }
 else if( strtolower(substr($surl,0,7))=='http://' )
 {
     $okurl = preg_replace('/^http:///i', '', $surl);
 }
 else
 {
     //$okurl = $this->BaseUrlPath.'/'.$surl;  
     $okurl = $this->HomeUrl.'/'.$surl; //替换为这一句
 }
赞赏
对内容有疑问,请加我微信:guoqiang7585

国强极客

文章作者

博客站长,有问题请加微信【guoqiang7585】。

国强极客

知梦采集问题
采集时提示读取网址失败 DEDECMS 设置采集规则时,保存测试时,提示读取测试网址失败,不能下载远程图片和资源,不能提取缩略图,是因为服务器上禁用了fsockopen() 与pfsockopen() 函数造…
扫描二维码继续阅读
2019-11-10