整站克隆的php curl库

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

库特点:

  1. 给定一初始连接,初始链接以下的层级所有文件会拷贝到本地。
  2. 多次克隆可以配置是否覆盖。
  3. 可以配置是否下载图片。
  4. 所有链接替换为相对链接,所以可以随便rewrite。
  5. 绝对不会出现文件覆盖等问题。
  6. 确实好NB啊。

Github: https://github.com/ares333/CurlMulti/blob/master/CurlMulti/Base/Clone.php

说明:https://github.com/ares333/curlmulti/blob/master/README_CN.md  页面中搜索   CurlMulti/Base/Clone.php

克隆结果展示(这个克隆操作几秒钟就完成了):
http://manual.phpdr.net

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 curl库》上有3条评论

  1. Warning: substr() expects parameter 1 to be string, object given in /home/wwwroot/com/CurlMulti/MyCurl.php on line 175

    Catchable fatal error: Object of class CurlMulti could not be converted to string in /home/wwwroot/com/CurlMulti/MyCurl/Clone.php on line 32

发表评论

电子邮件地址不会被公开。

*