제3자가 처음 로그인하면(QQ, WeChat) 플랫폼 사용자 아바타가 자동으로 제3자 아바타로 대체됩니다. 해당 코드는 다음과 같습니다
$logo = "http://thirdqq.qlogo.cn/g?b=oidb&k=OMu7e7tukTueShatFXVX1w&kti=ZDyqNAAAAAE&s=100&t=1611112388" try { $fileContent = file_get_contents($logo); } catch (\Exception $e) { throw new \Exception("读取文件[" . $logo ."]失败"); } $imageInfo = getimagesize($logo); if (empty($imageInfo)) { throw new \Exception("文件[" . $logo ."]格式有误(非图片)"); } $base64Image = 'data:' . $imageInfo['mime'] . ';base64,' . base64_encode($fileContent);
결과는 QQ 사용자 아바타를 구하고 file_get_contents()를 사용하여 아바타 파일 내용을 구하는데 18~20초가 걸렸습니다
나중에 인터넷에서 검색해보니 타임아웃을 설정할 수 있다고 하더군요.
$context = stream_context_create([ 'http' => [ 'timeout' => 3 //超时时间,单位为秒 ] ]); // Fetch the URL's contents $fileContent = file_get_contents($logo, 0, $context);
하지만 작동하지 않았습니다. 3초 타임아웃이 적용되지 않았습니다
GuzzleHttp 또는 PHP 자체 컬을 사용하여 아바타 콘텐츠를 가져왔고 결과는 타임아웃이 없습니다
$logo = "http://thirdqq.qlogo.cn/g?b=oidb&k=OMu7e7tukTueShatFXVX1w&kti=ZDyqNAAAAAE&s=100&t=1611112388" try { $client = new Client(['timeout' => 3]); $fileContent = $client->get($logo)->getBody()->getContents(); } catch (\Exception $e) { throw new \Exception("读取文件[" . $logo ."]失败"); } $imageInfo = getimagesize($logo); if (empty($imageInfo)) { throw new \Exception("文件[" . $logo ."]格式有误(非图片)"); } $base64Image = 'data:' . $imageInfo['mime'] . ';base64,' . base64_encode($fileContent);
하지만, 시간이 많이 걸리는 발견이 있으며, getimagesize 함수에도 18~20초가 걸립니다
아바타 콘텐츠는 정상입니다. PHP에는 이미지 콘텐츠를 통해 MIME을 얻는 기능, 즉 getimagesizefromstring
$logo = "http://thirdqq.qlogo.cn/g?b=oidb&k=OMu7e7tukTueShatFXVX1w&kti=ZDyqNAAAAAE&s=100&t=1611112388" try { $client = new Client(['timeout' => 3]); $fileContent = $client->get($logo)->getBody()->getContents(); } catch (\Exception $e) { throw new \Exception("读取文件[" . $logo ."]失败"); } $imageInfo = getimagesizefromstring($logo); if (empty($imageInfo)) { throw new \Exception("文件[" . $logo ."]格式有误(非图片)"); } $base64Image = 'data:' . $imageInfo['mime'] . ';base64,' . base64_encode($fileContent);
이후 문제가 해결되었습니다. .
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 file_get_contents 및 getimagesize의 심각한 시간 소모 문제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!