
有时候经常会用到一些在线手册,比如国内或国外的,有些是访问速度慢,有些是作者直接吧网站关闭了,有些是服务器总是宕机,所以还是全盘克隆到自己服务器比较爽, 这里给大家推荐接触过的一个CURL库,可以实现整站克隆功能,对于复制一些手册站点还是非常实用的。 库特点:
给定一初始连接,初始链接以下的层级所有文件会拷贝到本地。
多次克隆可以配置是否覆盖。
可以配置是否下载图片。
所有链接替换为相对链接,所以可以随便rewrite。
绝对不会出现文件覆盖等问题。
克隆结果展示(这个克隆操作几秒钟就完成了):
克隆源网站:http://www.laruence.com/manual/
克隆结果:http://manual.phpdr.net/yaf/ 技术交流: http://www.lai18.com/content/368643.html
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;
-
- }
-
- }
|