CURL 캐시 원격 파일 클래스
<?php /** * 用于获取远程文件并缓存 * CurlCache v1.0 * Created by cr. * Date: 2015/12/03 */ //namespace vendor\core; class CurlCache { /** * 请求地址 * @var string */ protected $url; /** * 缓存生存期 * @var int */ protected $expires; /** * 请求超时 * @var int */ protected $timeOut; /** * 是否开启缓存 * @var int */ protected $cacheEna; /** * 是否显示debug信息 * @var bool */ protected $debug; /** * 其他不用配置的内部属性 */ protected $path; protected $filename; protected $curlData; protected $curlHeader; protected $curlError; protected $cacheData; public $data; /** * CurlCache constructor. * @param int $expires * @param int $timeOut * @param bool|true $cacheEna * @param bool|false $debug */ public function __construct($expires=3600, $timeOut=30, $cacheEna=true, $debug=false) { $this->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 '数据为空,不写入缓存'; } } }
로그인 후 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사
R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
어 ass 신 크리드 그림자 : 조개 수수께끼 솔루션
2 몇 주 전
By DDD
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제
Gmail 이메일의 로그인 입구는 어디에 있나요?
7470
15


Cakephp 튜토리얼
1377
52


Steam의 계정 이름 형식은 무엇입니까?
77
11


Win11 활성화 키 영구
48
19


NYT 연결 힌트와 답변
19
29

