initAdapters(); self::$_request_max = getenv("cfmgr.request.max"); } final protected function getAccountModel(): AccountModel { if ($this->_accountModel === null) { $this->_accountModel = new AccountModel(); } return $this->_accountModel; } final public function initAdapters(): void { foreach ($this->getAccountModel()->getEntitys() as $entity) { $this->_clients[$entity->getAPIKey()] = new Guzzle( new APIKey($entity->getTitle(), $entity->getAPIKey()) ); } } public function getAdapter(string $apikey): Guzzle { if (!array_key_exists($apikey, $this->_clients)) { throw new \Exception(+__FUNCTION__ . " => {$apikey}에 해당하는 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->_clients[$apikey]; } public function getAccount(string $apikey): Accounts { return new Accounts($this->getAdapter($apikey)); } public function getZone(string $apikey): Zones { return new Zones($this->getAdapter($apikey)); } public function getRecord(string $apikey): DNS { return new DNS($this->getAdapter($apikey)); } }