码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-05-27 10:30:21      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

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

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


库特点:

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

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

可以配置是否下载图片。

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

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



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

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

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

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


Demo代码:

<?php
//author http://www.lai18.com
class Controller_Spider extends MyYaf_Controller_Base{

 function init(){

  parent::init();

  if(!$this->getRequest()->isCli()){

      Ares_Http::error403();

  }

  include ‘CurlMulti/CurlMulti.php‘;

  include ‘CurlMulti/MyCurl.php‘;

  include ‘phpQuery.php‘;

 }

}


<?php
//author http://www.lai18.com
class YafdocController extends Controller_Spider {

 function init() {

  parent::init ();

  include ‘CurlMulti/MyCurl/Clone.php‘;

 }

 function indexAction() {

  $url = ‘http://www.laruence.com/manual‘;

  $dir = Yaf_Application::app ()->getAppDirectory () . ‘/data/manual‘;

  $cacheDir = $this->getBaseDir () . ‘/cache/curl‘;

  if (! is_dir ( $cacheDir )) {

   mkdir ( $cacheDir );

  }

  $curl = new CurlMulti ();

  $curl->maxThread = 10;

  $curl->cache [‘enable‘] = true;

  $curl->cache [‘enableDownload‘] = true;

  $curl->cache [‘dir‘] = $cacheDir;

  $curl->cache [‘compress‘] = true;

  $clone = new MyCurl_Clone ( $curl, $url, $dir );

  $clone->overwrite = true;

  $clone->start ();

  return false;

 }

}



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

标签:

原文地址:http://my.oschina.net/u/2321543/blog/420371

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!