自己写的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 classController_SpiderextendsMyYaf_Controller_Base{ functioninit(){ parent::init(); if(!$this->getRequest()->isCli()){ Ares_Http::error403(); } include'CurlMulti/CurlMulti.php'; include'CurlMulti/MyCurl.php'; include'phpQuery.php'; } }
<?php classYafdocControllerextendsController_Spider{ functioninit(){ parent::init(); include'CurlMulti/MyCurl/Clone.php'; } functionindexAction(){ $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=newCurlMulti(); $curl->maxThread=10; $curl->cache['enable']=true; $curl->cache['enableDownload']=true; $curl->cache['dir']=$cacheDir; $curl->cache['compress']=true; $clone=newMyCurl_Clone($curl,$url,$dir); $clone->overwrite=true; $clone->start(); returnfalse; } }