private function reloadTicket() { $fp = fopen($this->file, "w"); if (flock($fp, LOCK_EX)) { Log::i('Lock', 'JsapiTicket'); try { $url = $this->url . "?access_token={$this->accessToken}&type=wx_card"; $httpClient = new HttpClient($url); $httpClient->get(); $stream = $httpClient->jsonToArray(); if (isset($stream['ticket'])) { //提取参数 $jsapi_ticket = $stream['ticket']; $expires_in = $stream['expires_in']; $expires_time = intval(time()) + intval($expires_in) - 60; //60s超时缓冲 $file_stream = json_encode(array('expires_time' => $expires_time, 'jsapi_ticket' => $jsapi_ticket)); fwrite($fp, "<?php exit; ?>\n"); fwrite($fp, $file_stream); Log::i('Unlock', 'JsapiTicket'); flock($fp, LOCK_UN); fclose($fp); @chmod($this->file, DEFAULT_PERMISSION); return $jsapi_ticket; } else { throw ApiException::throws(ApiException::ERROR_JSON_ERROR_CODE, 'response: ' . $httpClient->getResponse()); } } catch (ApiException $e) { Log::i('Unlock', 'JsapiTicket'); flock($fp, LOCK_UN); fclose($fp); throw $e; return false; } } else { fclose($fp); throw ApiException::throws(ApiException::FILE_LOCK_ERROR_CODE); return false; } }