_adapter = new Guzzle(new APIKey($email, $auth_key)); } final public function request(): Guzzle { if ($this->_adapter === null) { throw new \Exception(+__FUNCTION__ . " => Adapter를 정의하지 않았습니다."); } if (self::$_request >= self::$_request_max) { log_message('warning', sprintf("--Cloudflare API Call %s초 대기 시작--", self::$_request_timewait)); sleep(intval(getenv("cf.mgr.request.time.wait"))); self::$_request = 0; log_message('warning', sprintf("--Cloudflare API Call %s초 대기 종료--", self::$_request_timewait)); } self::$_request++; return $this->_adapter; } final protected function reload_procedure($uri): array { $page = 1; //Page는 1부터 시작해야함 $perpage_max = getenv("cfmgr.request.perpage.max"); $results = []; do { $query = [ 'page' => $page, 'per_page' => $perpage_max, 'match' => 'all', ]; $cf = $this->request()->get($uri, $query); $cf = json_decode($cf->getBody()); if (!$cf->success) { throw new \Exception(__FUNCTION__ . "에서 실패:\n" . var_export($cf, true)); } $results[] = $cf->result; //Loop 제한 : 한페이지에서 가져온 갯수가 perpage_max보다 적다는것은 더이상 다음페이지기 없으므로 0로 종료시키기 위함 $page = count($cf->result) < $perpage_max ? 0 : $page + 1; } while (0 < $page); return $results; } }