自己写的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 相关文章推荐
备份mysql数据库的php代码(一个表一个文件)
May 28 PHP
PHP 事件机制(2)
Mar 23 PHP
深入PHP中的HashTable结构详解
Jun 13 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
Jul 14 PHP
php获取随机数组列表的方法
Nov 13 PHP
浅谈PHP链表数据结构(单链表)
Jun 08 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
Oct 10 PHP
YII2自动登录Cookie总是失效的解决方法
Jun 28 PHP
浅谈PHP实现大流量下抢购方案
Dec 15 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
Apr 10 PHP
laravel Validator ajax返回错误信息的方法
Sep 29 PHP
HTTP头隐藏PHP版本号实现过程解析
Dec 09 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的session cookie错误
2009/08/09 PHP
php empty函数判断mysql表单是否为空
2010/04/12 PHP
smarty简单应用实例
2015/11/03 PHP
PHP5.3新特性小结
2016/02/14 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
sogou地图API用法实例教程
2014/09/11 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
vue+eslint+vscode配置教程
2019/08/09 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
python中的计时器timeit的使用方法
2017/10/20 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
Python管理Windows服务小脚本
2018/03/12 Python
Python 加密与解密小结
2018/12/06 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
大学毕业的自我鉴定
2013/10/08 职场文书
期末评语大全
2014/05/04 职场文书
预备党员转正考核材料
2014/06/03 职场文书
《秋思》教学反思
2016/02/23 职场文书
不知如何爱孩子,这些方法教会您
2019/08/06 职场文书
亲情作文之母爱
2019/09/25 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python
Python实现简单的俄罗斯方块游戏
2021/09/25 Python