自己写的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 相关文章推荐
一个简单的PHP&amp;MYSQL留言板源码
Jul 19 PHP
php-accelerator网站加速PHP缓冲的方法
Jul 30 PHP
PHP中使用unset销毁变量并内存释放问题
Jul 05 PHP
解析mysql 表中的碎片产生原因以及清理
Jun 22 PHP
php设计模式之单例、多例设计模式的应用分析
Jun 30 PHP
php 字符串压缩方法比较示例
Jan 23 PHP
php生成动态验证码gif图片
Oct 19 PHP
php获取当前页面完整URL地址
Dec 30 PHP
谈谈PHP连接Access数据库的注意事项
Aug 12 PHP
PHP入门教程之数学运算技巧总结
Sep 11 PHP
php xhprof使用实例详解
Apr 15 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
Apr 06 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
php FPDF类库应用实现代码
2009/03/20 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
常用简易JavaScript函数
2009/04/09 Javascript
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
10个实用的脚本代码工具
2010/05/04 Javascript
jquery 图片轮换效果
2010/07/29 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
微信小程序 数据绑定详解及实例
2016/10/25 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
极简的Python入门指引
2015/04/01 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
python调用外部程序的实操步骤
2019/03/04 Python
Python实现的栈、队列、文件目录遍历操作示例
2019/05/06 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
python通过移动端访问查看电脑界面
2020/01/06 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
详解Python3 中的字符串格式化语法
2020/01/15 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
农民工讨薪标语
2014/06/26 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
员工工作自我评价
2014/09/26 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书