自己写的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 相关文章推荐
数据库的日期格式转换
Oct 09 PHP
PHP语法速查表
Jan 02 PHP
apache rewrite_module模块使用教程
Jan 10 PHP
简单PHP上传图片、删除图片实现代码
May 12 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
Jun 19 PHP
PHP中exec函数和shell_exec函数的区别
Aug 20 PHP
如何让CI框架支持service层
Oct 29 PHP
php数组使用规则分析
Feb 27 PHP
php实现的通用图片处理类
Mar 24 PHP
PHP基于MySQL数据库实现对象持久层的方法
Jun 17 PHP
php UNIX时间戳用法详解
Feb 16 PHP
基于PHP实现栈数据结构和括号匹配算法示例
Aug 10 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
实现dedecms全站URL静态化改造的代码
2007/03/29 PHP
应用开发中涉及到的css和php笔记分享
2011/08/02 PHP
PHP常用技巧总结(附函数代码)
2012/02/04 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
2012/11/07 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
js获取input标签的输入值实现代码
2013/08/05 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
深入探讨前端框架react
2015/12/09 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
2016/07/05 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
2017/10/31 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
Angular.JS读取数据库数据调用完整实例
2019/07/02 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
python比较两个列表大小的方法
2015/07/11 Python
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
求职信标题怎么写
2014/05/26 职场文书
幼师求职信
2014/06/23 职场文书
材料物理专业求职信
2014/09/01 职场文书
全国法院系统开展党的群众路线教育实践活动综述(全文)
2014/10/25 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
导游词之永泰公主墓
2019/12/04 职场文书
python_tkinter弹出对话框创建
2022/03/20 Python
angular异步验证器防抖实例详解
2022/03/31 Javascript
Nginx如何配置根据路径转发详解
2022/07/23 Servers