サードパーティが初めてログインするとき (QQ、WeChat) 、プラットフォーム ユーザーのアバターは自動的にサードパーティのアバターに変更されます。関連するコードは次のとおりです。
$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独自のcurlを使用して置き換えると、結果はタイムアウトしませんでした
$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 中国語 Web サイトの他の関連記事を参照してください。