expires=$expires;
$this->timeOut=$timeOut;
$this->cacheEna=$cacheEna;
$this->debug=$debug;
}
/**
* 检测并创建目录
* @return bool
*/
public function mkdirs(){
if(is_dir($this->path)){
return true;
}else{
return mkdir($this->path, 777, true);
}
}
/**
* 设置缓存文件相关信息
* @param $url
*/
public function setCacheFileInfo($url){
$this->url=$url;
$this->path=dirname(__FILE__).'/cache/';
$this->filename=$this->url?md5($this->url):'null';
}
/**
* 主方法,取得数据
* @param $url
* @return bool|string
*/
public function get($url){
$this->setCacheFileInfo($url);
if($this->cacheEna) $this->data=unserialize($this->getCache($url));
if(!$this->data) $this->data=$this->curlGet($url);
if($this->data && $this->cacheEna) $this->setCache($url,serialize($this->data));
return $this->data->contents;
}
/**
* curl GET 请求数据
* @param $url
* @return string
*/
public function curlGet($url){
if($this->debug && $url=='') echo('请求URL为空,请检查');
$return=new stdClass();
$ch = curl_init ();
curl_setopt($ch, CURLOPT_URL,$url );
curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeOut);
curl_setopt($ch, CURLOPT_HEADER, 0 );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$this->curlData=curl_exec($ch);
$this->curlHeader=curl_getinfo($ch);
$this->curlError=curl_error($ch);
$return->header=$this->curlHeader;
$return->contents=$this->curlData;
curl_close($ch);
if((!$this->curlData || $this->curlHeader['http_code'] != '200') && $this->debug ) echo '请求失败,错误信息:'.$this->curlError;
else return $return;
}
/**
* 取得缓存数据
* @param $url
* @return bool|string
*/
public function getCache($url){
$this->setCacheFileInfo($url);
if(file_exists($this->path.$this->filename)){
if(time() - filemtime($this->path.$this->filename) < $this->expires) $this->cacheData=file_get_contents($this->path.$this->filename);
else if($this->debug) echo '缓存文件已过期';
if($this->cacheData) return $this->cacheData;else if($this->debug) echo '缓存文件内容为空';
}else{
//if($this->debug) echo '缓存文件不存在';
return false;
}
}
/**
* 写入缓存数据
* @param $url
* @param $data
*/
public function setCache($url,$data){
$this->setCacheFileInfo($url);
if(!$this->mkdirs() && $this->debug) echo('创建缓存目录失败:'.$this->path);
if($data){
if(!file_put_contents($this->path.$this->filename,$data) && $this->debug){
echo '写入缓存失败 File:'.$this->path.$this->filename;
}
}else{
if($this->debug) echo '数据为空,不写入缓存';
}
}
} 0
0
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。
8
2026.01.15
公务员递补名单公布时间不固定,通常在面试前,由招录单位(如国家知识产权局、海关等)发布,依据是原入围考生放弃资格,会按笔试成绩从高到低递补,递补考生需按公告要求限时确认并提交材料,及时参加面试/体检等后续环节。要求核心是按招录单位公告及时响应、提交材料(确认书、资格复审材料)并准时参加面试。
44
2026.01.15
(一)符合拟调剂职位所要求的资格条件。 (二)公共科目笔试成绩同时达到拟调剂职位和原报考职位的合格分数线,且考试类别相同。 拟调剂职位设置了专业科目笔试条件的,专业科目笔试成绩还须同时达到合格分数线,且考试类别相同。 (三)未进入原报考职位面试人员名单。
58
2026.01.15
笔试成绩查询入口已开通,考生可登录国家公务员局中央机关及其直属机构2026年度考试录用公务员专题网站http://bm.scs.gov.cn/pp/gkweb/core/web/ui/business/examResult/written_result.html,查询笔试成绩和合格分数线,点击“笔试成绩查询”按钮,凭借身份证及准考证进行查询。
11
2026.01.15
本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。
65
2026.01.14
热门下载
相关下载
精品课程




