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

 更新时间:2015年02月12日 10:36:49   投稿:junjie  
这篇文章主要介绍了自己写的php curl库实现整站克隆功能,本文给出工具库源码下载和使用示例,需要的朋友可以参考下

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

库特点:

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

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

脚本之家下载:http://xiazai.jb51.net/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;
 }
}

相关文章

  • Laravel (Lumen) 解决JWT-Auth刷新token的问题

    Laravel (Lumen) 解决JWT-Auth刷新token的问题

    今天小编就为大家分享一篇Laravel (Lumen) 解决JWT-Auth刷新token的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • php smarty truncate UTF8乱码问题解决办法

    php smarty truncate UTF8乱码问题解决办法

    这篇文章主要介绍了php smarty truncate UTF8乱码问题解决办法,需要的朋友可以参考下
    2014-06-06
  • PHP数组内存利用率低和弱类型详细解读

    PHP数组内存利用率低和弱类型详细解读

    本篇文章主要介绍了PHP数组内存利用率低和弱类型详细解读,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-08-08
  • php格式化时间戳

    php格式化时间戳

    一般mysql数据库中存储时间都是使用的Unix时间戳,那么我们显示时间的时候如果更加的友好呢,今天就给大家分享3个封装好的格式化函数,有需要的小伙伴可以参考下
    2016-12-12
  • phpStorm+XDebug+chrome 配置详解

    phpStorm+XDebug+chrome 配置详解

    这篇文章主要介绍了phpStorm+XDebug+chrome 配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Thinkphp5.0自动生成模块及目录的方法详解

    Thinkphp5.0自动生成模块及目录的方法详解

    这篇文章主要介绍了Thinkphp5.0自动生成模块及目录的方法,简单分析了Thinkphp5.0的结构、目录、创建与运行方法,需要的朋友可以参考下
    2017-04-04
  • Laravel利用gulp如何构建前端资源详解

    Laravel利用gulp如何构建前端资源详解

    Gulp 是一个自动化工具,前端开发者可以使用它来处理常见任务,下面这篇文章主要给大家介绍了关于Laravel利用gulp如何构建前端资源的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧
    2018-06-06
  • CodeIgniter CLI模式简介

    CodeIgniter CLI模式简介

    这篇文章主要介绍了CodeIgniter CLI模式,需要的朋友可以参考下
    2014-06-06
  • PHP 构造函数和析构函数原理与用法分析

    PHP 构造函数和析构函数原理与用法分析

    这篇文章主要介绍了PHP 构造函数和析构函数原理与用法,结合具体实例形式分析了PHP 构造函数和析构函数基本概念、功能、原理、用法及相关操作注意事项,需要的朋友可以参考下
    2020-04-04
  • ThinkPHP之用户注册登录留言完整实例

    ThinkPHP之用户注册登录留言完整实例

    这篇文章主要介绍了ThinkPHP之用户注册登录留言完整实例,有助于详细了解ThinkPHP的运作流程,需要的朋友可以参考下
    2014-07-07

最新评论