自己写的php curl库实现整站克隆功能


Posted in PHP onFebruary 12, 2015

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

库特点:

给定一初始连接,初始链接以下的层级所有文件会拷贝到本地。
多次克隆可以配置是否覆盖。
可以配置是否下载图片。
所有链接替换为相对链接,所以可以随便rewrite。
绝对不会出现文件覆盖等问题。
最NB的特点是,没有比这更NB的库了。

SVN:http://svn.phpdr.net/repos/ares/php/library/trunk/lib/CurlMulti/MyCurl/Clone.php

三水点靠木下载:http://xiazai.3water.com/201502/other/CurlMulti.rar

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

克隆源网站:http://www.laruence.com/manual/
克隆结果:http://manual.phpdr.net/yaf/

Demo代码:

<?php

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

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;

 }

}
PHP 相关文章推荐
第三节 定义一个类 [3]
Oct 09 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
Jan 10 PHP
PHP数组排序函数合集 以及它们之间的联系分析
Jun 27 PHP
php 强制下载文件实现代码
Oct 28 PHP
php中simplexml_load_string使用实例分享
Feb 13 PHP
php生成随机密码自定义函数代码(简单快速)
May 10 PHP
PHP模块memcached使用指南
Dec 08 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
PHP中substr函数字符串截取用法分析
Jan 07 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
解决laravel中日志权限莫名变成了root的问题
Oct 17 PHP
通过代码实例解析PHP session工作原理
Dec 11 PHP
PIGCMS 如何关闭聊天机器人
Feb 12 #PHP
PHP实现抓取Google IP并自动修改hosts文件
Feb 12 #PHP
php中switch与ifelse的效率区别及适用情况分析
Feb 12 #PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
Feb 12 #PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 #PHP
php实现parent调用父类的构造方法与被覆写的方法
Feb 11 #PHP
php使用类继承解决代码重复的问题
Feb 11 #PHP
You might like
Yii框架引用插件和ckeditor中body与P标签去除的方法
2017/01/19 PHP
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
Javascript string 扩展库代码
2010/04/09 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
2013/11/08 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
2016/06/08 Javascript
CSS3+JavaScript实现翻页幻灯片效果
2017/06/28 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
nodejs实现超简单生成二维码的方法
2018/03/17 NodeJs
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
2019/07/25 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
python创建进程fork用法
2015/06/04 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
2018/12/15 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
Scrapy框架实现的登录网站操作示例
2020/02/06 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
python文件路径操作方法总结
2020/12/21 Python
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
乌克兰时尚鞋子和衣服购物网站:Born2be
2018/05/24 全球购物
香港零食网购:上仓胃子
2020/06/08 全球购物
外贸实习生自荐信范文
2013/11/24 职场文书
兰兰过桥教学反思
2014/02/08 职场文书
班长自荐书范文
2014/02/11 职场文书
饭店服务员岗位职责
2015/02/09 职场文书
单位综合评价意见
2015/06/05 职场文书
关于幸福的感言
2015/08/03 职场文书
五一放假通知怎么写
2015/08/18 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书