自己写的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;
}
}