首页 编程 软件学院 查看内容

推荐一个curl库,实现整站克隆功能

2015-5-27 15:03 |来自: csdn.net 1624 0

摘要: 有时候经常会用到一些在线手册,比如国内或国外的,有些是访问速度慢,有些是作者直接吧网站关闭了,有些是服务器总是宕机,所以还是全盘克隆到自己服务器比较爽,这里给大家推荐接触过的一个CURL库,可以实现整站克 ...
关键词: nbsp CURL http CurlMulti cacheDir Clone cache include manual Controller

有时候经常会用到一些在线手册,比如国内或国外的,有些是访问速度慢,有些是作者直接吧网站关闭了,有些是服务器总是宕机,所以还是全盘克隆到自己服务器比较爽,

这里给大家推荐接触过的一个CURL库,可以实现整站克隆功能,对于复制一些手册站点还是非常实用的。


库特点:

给定一初始连接,初始链接以下的层级所有文件会拷贝到本地。

多次克隆可以配置是否覆盖。

可以配置是否下载图片。

所有链接替换为相对链接,所以可以随便rewrite。

绝对不会出现文件覆盖等问题。



克隆结果展示(这个克隆操作几秒钟就完成了):

克隆源网站:http://www.laruence.com/manual/

克隆结果:http://manual.phpdr.net/yaf/

技术交流: http://www.lai18.com/content/368643.html 


Demo代码:

  1. <?php  
  2. //author http://www.lai18.com  
  3. class Controller_Spider extends MyYaf_Controller_Base{  
  4.   
  5.  function init(){  
  6.   
  7.   parent::init();  
  8.   
  9.   if(!$this->getRequest()->isCli()){  
  10.   
  11.       Ares_Http::error403();  
  12.   
  13.   }  
  14.   
  15.   include 'CurlMulti/CurlMulti.php';  
  16.   
  17.   include 'CurlMulti/MyCurl.php';  
  18.   
  19.   include 'phpQuery.php';  
  20.   
  21.  }  
  22.   
  23. }  

  1. <?php  
  2. //author http://www.lai18.com  
  3. class YafdocController extends Controller_Spider {  
  4.   
  5.  function init() {  
  6.   
  7.   parent::init ();  
  8.   
  9.   include 'CurlMulti/MyCurl/Clone.php';  
  10.   
  11.  }  
  12.   
  13.  function indexAction() {  
  14.   
  15.   $url = 'http://www.laruence.com/manual';  
  16.   
  17.   $dir = Yaf_Application::app ()->getAppDirectory () . '/data/manual';  
  18.   
  19.   $cacheDir = $this->getBaseDir () . '/cache/curl';  
  20.   
  21.   if (! is_dir ( $cacheDir )) {  
  22.   
  23.    mkdir ( $cacheDir );  
  24.   
  25.   }  
  26.   
  27.   $curl = new CurlMulti ();  
  28.   
  29.   $curl->maxThread = 10;  
  30.   
  31.   $curl->cache ['enable'] = true;  
  32.   
  33.   $curl->cache ['enableDownload'] = true;  
  34.   
  35.   $curl->cache ['dir'] = $cacheDir;  
  36.   
  37.   $curl->cache ['compress'] = true;  
  38.   
  39.   $clone = new MyCurl_Clone ( $curl$url$dir );  
  40.   
  41.   $clone->overwrite = true;  
  42.   
  43.   $clone->start ();  
  44.   
  45.   return false;  
  46.   
  47.  }  
  48.   
  49. }  
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部