自己写的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之第七天
Oct 09 PHP
小偷PHP+Html+缓存
Nov 25 PHP
php实现查询百度google收录情况(示例代码)
Aug 02 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
Jun 29 PHP
php导出CSV抽象类实例
Sep 24 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
php 数组元素快速去重
May 05 PHP
PHP生成短网址的思路以及实现方法的详解
Mar 25 PHP
laravel-admin select框默认选中的方法
Oct 03 PHP
Laravel使用原生sql语句并调用的方法
Oct 09 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
Mar 03 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
May 27 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中使用Oracle数据库(6)
2006/10/09 PHP
PHP脚本的10个技巧(7)
2006/10/09 PHP
php+mysql查询实现无限下级分类树输出示例
2016/10/03 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
php文件后缀不强制为.php的实操方法
2019/09/18 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
PHP的Trait机制原理与用法分析
2019/10/18 PHP
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
2012/10/11 Javascript
javascript的内存管理详解
2013/08/07 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
2013/12/12 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
2016/07/01 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
python3图片转换二进制存入mysql
2013/12/06 Python
Python中字符串的处理技巧分享
2016/09/17 Python
python将图片转base64,实现前端显示
2020/01/09 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
Python如何急速下载第三方库详解
2020/11/02 Python
简历的自荐信
2013/12/19 职场文书
七年级地理教学反思
2014/01/26 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
爱护公共设施倡议书
2014/08/29 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
数学教师求职信范文
2015/03/20 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
安全生产学习心得体会
2016/01/18 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏
Windows server 2012搭建FTP服务器
2022/04/29 Servers
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript