{"id":3475,"date":"2025-03-24T08:46:06","date_gmt":"2025-03-23T23:46:06","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=3475"},"modified":"2025-03-24T08:46:36","modified_gmt":"2025-03-23T23:46:36","slug":"%e3%80%90%e5%ae%8c%e5%85%a8%e8%a7%a3%e8%aa%ac%e3%80%91php%e3%81%aecurl%e5%be%b9%e5%ba%95%e3%83%9e%e3%82%b9%e3%82%bf%e3%83%bc%ef%bc%81%e5%9f%ba%e6%9c%ac%e3%81%8b%e3%82%89%e5%bf%9c%e7%94%a8%e3%81%be","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=3475","title":{"rendered":"\u3010\u5b8c\u5168\u89e3\u8aac\u3011PHP\u306ecURL\u5fb9\u5e95\u30de\u30b9\u30bf\u30fc\uff01\u57fa\u672c\u304b\u3089\u5fdc\u7528\u307e\u30679\u3064\u306e\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af"},"content":{"rendered":"\n<p>Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u304a\u3044\u3066\u3001\u5916\u90e8\u30b5\u30fc\u30d3\u30b9\u3084API\u3068\u306e\u901a\u4fe1\u306f\u6b20\u304b\u305b\u306a\u3044\u8981\u7d20\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002PHP\u3067\u5916\u90e8\u30b5\u30fc\u30d3\u30b9\u3068\u9023\u643a\u3059\u308b\u969b\u306b\u6700\u3082\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3068\u306a\u308b\u306e\u304c\u300ccURL\u300d\u3067\u3059\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001PHP\u958b\u767a\u8005\u3068\u3057\u3066\u77e5\u3063\u3066\u304a\u304f\u3079\u304dcURL\u306e\u57fa\u672c\u304b\u3089\u5fdc\u7528\u30c6\u30af\u30cb\u30c3\u30af\u307e\u3067\u3092\u5fb9\u5e95\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">\u30a4\u30f3\u30c8\u30ed\u30c0\u30af\u30b7\u30e7\u30f3<\/a>  <\/li>  <li>    <a href=\"#i-1\">PHP \u3067 cURL \u3092\u4f7f\u7528\u3059\u308b\u57fa\u672c<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-2\">cURL \u3068\u306f\uff1f\u305d\u306e\u5f79\u5272\u3068\u91cd\u8981\u6027<\/a>      <\/li>      <li>        <a href=\"#i-3\">PHP \u3067 cURL \u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u74b0\u5883\u8a2d\u5b9a<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-6\">\u57fa\u672c\u7684\u306aGET\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u9001\u4fe1\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-10\">PHP \u306e cURL \u95a2\u6570\u3092\u7406\u89e3\u3059\u308b<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-11\">curl_init()\u3001curl_setopt()\u3001curl_exec()\u306e\u57fa\u672c<\/a>      <\/li>      <li>        <a href=\"#i-15\">\u4e3b\u8981\u306aCURLOPT\u30aa\u30d7\u30b7\u30e7\u30f3\u3068\u305d\u306e\u4f7f\u3044\u65b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-20\">curl_close()\u306e\u91cd\u8981\u6027\u3068\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-23\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af1\uff1aPOST\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u9001\u4fe1<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-24\">\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u306e\u9001\u4fe1\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-27\">JSON\u30c7\u30fc\u30bf\u306e\u9001\u4fe1\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-29\">\u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u306e\u9001\u4fe1\uff08\u30d5\u30a1\u30a4\u30eb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\uff09<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-33\">\u307e\u3068\u3081<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-34\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af2\uff1a\u30d8\u30c3\u30c0\u30fc\u3068\u30af\u30c3\u30ad\u30fc\u306e\u64cd\u4f5c<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-35\">\u30ab\u30b9\u30bf\u30e0\u30d8\u30c3\u30c0\u30fc\u306e\u8a2d\u5b9a\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-39\">\u30af\u30c3\u30ad\u30fc\u306e\u9001\u4fe1\u3068\u53d6\u5f97<\/a>      <\/li>      <li>        <a href=\"#i-43\">Content-Type\u30d8\u30c3\u30c0\u30fc\u306e\u9069\u5207\u306a\u8a2d\u5b9a<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-47\">\u307e\u3068\u3081<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-48\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af3\uff1a\u5fdc\u7b54\u51e6\u7406\u306e\u9ad8\u5ea6\u306a\u65b9\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-49\">\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u306e\u53d6\u5f97\u3068\u5224\u65ad<\/a>      <\/li>      <li>        <a href=\"#i-53\">\u30ec\u30b9\u30dd\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc\u306e\u53d6\u5f97\u3068\u89e3\u6790<\/a>      <\/li>      <li>        <a href=\"#i-57\">\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0\u6280\u8853<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-62\">\u307e\u3068\u3081<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-63\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af4\uff1acURL\u3067\u306e\u8a8d\u8a3c\u51e6\u7406<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-64\">\u57fa\u672c\u8a8d\u8a3c\u306e\u5b9f\u88c5\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-69\">OAuth\u8a8d\u8a3c\u3068\u306e\u9023\u643a\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-74\">API\u30ad\u30fc\u3092\u4f7f\u7528\u3057\u305f\u8a8d\u8a3c\u306e\u5b9f\u88c5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-79\">\u307e\u3068\u3081<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-80\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af5\uff1a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-81\">\u63a5\u7d9a\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a<\/a>      <\/li>      <li>        <a href=\"#i-85\">\u30ad\u30fc\u30d7\u30a2\u30e9\u30a4\u30d6\u306e\u6d3b\u7528\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-88\">\u5727\u7e2e\u8ee2\u9001\u306e\u5229\u7528\uff08gzip\uff09<\/a>      <\/li>      <li>        <a href=\"#i-91\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u305f\u3081\u306e\u305d\u306e\u4ed6\u306e\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-95\">\u307e\u3068\u3081<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-96\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af6\uff1a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-97\">SSL\u8a3c\u660e\u66f8\u306e\u691c\u8a3c\u3068\u5b89\u5168\u306a\u63a5\u7d9a<\/a>      <\/li>      <li>        <a href=\"#i-102\">\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u306e\u30b5\u30cb\u30bf\u30a4\u30ba<\/a>      <\/li>      <li>        <a href=\"#i-106\">\u6a5f\u5bc6\u60c5\u5831\u306e\u5b89\u5168\u306a\u53d6\u308a\u6271\u3044<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-111\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u307e\u3068\u3081<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-112\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af7\uff1a\u30de\u30eb\u30c1\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u4e26\u5217\u51e6\u7406<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-113\">curl_multi_init()\u3092\u4f7f\u3063\u305f\u4e26\u5217\u30ea\u30af\u30a8\u30b9\u30c8<\/a>      <\/li>      <li>        <a href=\"#i-117\">\u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-119\">\u30ea\u30bd\u30fc\u30b9\u6d88\u8cbb\u3092\u6291\u3048\u305f\u5927\u91cf\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u51e6\u7406<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-122\">\u307e\u3068\u3081<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-123\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af8\uff1acURL\u3068PHP7\/8\u306e\u65b0\u6a5f\u80fd<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-124\">\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306e\u6539\u5584\u70b9<\/a>      <\/li>      <li>        <a href=\"#i-127\">\u65b0\u3057\u3044\u30aa\u30d7\u30b7\u30e7\u30f3\u3068\u6a5f\u80fd\u306e\u6d3b\u7528<\/a>      <\/li>      <li>        <a href=\"#i-131\">\u5f93\u6765\u306e\u30b3\u30fc\u30c9\u306e\u4e92\u63db\u6027\u3068\u79fb\u884c\u306e\u30dd\u30a4\u30f3\u30c8<\/a>      <\/li>      <li>        <a href=\"#i-136\">PHP 7.x\/8.x\u3078\u306e\u79fb\u884c\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-137\">\u307e\u3068\u3081<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-138\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af9\uff1acURL\u306e\u4ee3\u66ff\u624b\u6bb5\u3068\u6bd4\u8f03<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-139\">Guzzle HTTP \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u306e\u6bd4\u8f03<\/a>      <\/li>      <li>        <a href=\"#i-143\">file_get_contents() \u306e\u4f7f\u3044\u65b9<\/a>      <\/li>      <li>        <a href=\"#i-148\">\u72b6\u6cc1\u306b\u5fdc\u3058\u305f\u6700\u9069\u306a\u9078\u629e\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-153\">\u4ed6\u306e\u4ee3\u66ff\u624b\u6bb5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-154\">\u307e\u3068\u3081<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-155\">\u3088\u304f\u3042\u308b\u30a8\u30e9\u30fc\u3068\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-156\">\u63a5\u7d9a\u30a8\u30e9\u30fc\u306e\u539f\u56e0\u3068\u89e3\u6c7a\u7b56<\/a>      <\/li>      <li>        <a href=\"#i-159\">\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u30a8\u30e9\u30fc\u3078\u306e\u5bfe\u51e6\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-163\">SSL \u95a2\u9023\u306e\u554f\u984c\u306e\u89e3\u6c7a\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-166\">\u307e\u3068\u3081\uff1a\u52b9\u679c\u7684\u306aPHP cURL\u306e\u6d3b\u7528\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-167\">\u3053\u306e\u8a18\u4e8b\u3067\u5b66\u3093\u30609\u3064\u306e\u30c6\u30af\u30cb\u30c3\u30af\u306e\u7dcf\u62ec<\/a>      <\/li>      <li>        <a href=\"#i-177\">\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u5fdc\u7528\u30dd\u30a4\u30f3\u30c8<\/a>      <\/li>      <li>        <a href=\"#i-182\">\u4eca\u5f8c\u306e\u5b66\u7fd2\u306e\u305f\u3081\u306e\u30ea\u30bd\u30fc\u30b9\u7d39\u4ecb<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-187\">\u7d50\u8ad6<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">\u30a4\u30f3\u30c8\u30ed\u30c0\u30af\u30b7\u30e7\u30f3<\/h2>\n\n\n\n<p>\u73fe\u4ee3\u306eWeb\u958b\u767a\u3067\u306f\u3001\u5358\u4e00\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3060\u3051\u3067\u5168\u3066\u306e\u6a5f\u80fd\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u306f\u5c11\u306a\u304f\u306a\u308a\u307e\u3057\u305f\u3002\u4ee3\u308f\u308a\u306b\u3001\u69d8\u3005\u306a\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u3084API\u3092\u9023\u643a\u3055\u305b\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u67d4\u8edf\u3067\u5f37\u529b\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3059\u308b\u30a2\u30d7\u30ed\u30fc\u30c1\u304c\u4e3b\u6d41\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>PHP\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304b\u3089\u5916\u90e8\u306eWeb\u30b5\u30fc\u30d3\u30b9\u3084API\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u969b\u306b\u5fc5\u9808\u3068\u306a\u308b\u306e\u304c\u300ccURL\u300d\u3067\u3059\u3002cURL\u306fClient URL Library\u306e\u7565\u3067\u3001\u69d8\u3005\u306a\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u8ee2\u9001\u3059\u308b\u305f\u3081\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002PHP\u3067\u306f\u3053\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u7c21\u5358\u306b\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u3001\u8c4a\u5bcc\u306a\u95a2\u6570\u7fa4\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3057\u304b\u3057\u3001cURL\u3092\u300c\u306a\u3093\u3068\u306a\u304f\u4f7f\u3048\u308b\u300d\u3060\u3051\u3067\u306f\u306a\u304f\u3001\u9069\u5207\u306b\u7406\u89e3\u3057\u3066\u4f7f\u3044\u3053\u306a\u305b\u308b\u304b\u3069\u3046\u304b\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3001\u305d\u3057\u3066\u4fdd\u5b88\u6027\u304c\u5927\u304d\u304f\u5909\u308f\u3063\u3066\u304d\u307e\u3059\u3002\u7279\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u72b6\u6cc1\u3067\u306fcURL\u306e\u6df1\u3044\u7406\u89e3\u304c\u91cd\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESTful API\u3068\u306e\u9023\u643a<\/li>\n\n\n\n<li>OAuth\u8a8d\u8a3c\u3092\u5fc5\u8981\u3068\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u306e\u5229\u7528<\/li>\n\n\n\n<li>\u8907\u6570\u306eAPI\u3092\u540c\u6642\u306b\u547c\u3073\u51fa\u3059\u5834\u5408<\/li>\n\n\n\n<li>\u5927\u91cf\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u52b9\u7387\u7684\u306b\u51e6\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408<\/li>\n\n\n\n<li>\u30bb\u30ad\u30e5\u30a2\u306a\u901a\u4fe1\u304c\u5fc5\u9808\u306e\u30b7\u30b9\u30c6\u30e0<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u306e\u8a18\u4e8b\u306f\u4e2d\u7d1a\u301c\u4e0a\u7d1a\u30ec\u30d9\u30eb\u306ePHP\u958b\u767a\u8005\u3092\u4e3b\u306a\u5bfe\u8c61\u3068\u3057\u3066\u3044\u307e\u3059\u304c\u3001cURL\u306e\u57fa\u672c\u304b\u3089\u4e01\u5be7\u306b\u89e3\u8aac\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u521d\u5fc3\u8005\u306e\u65b9\u3082\u5341\u5206\u306b\u7406\u89e3\u3067\u304d\u308b\u5185\u5bb9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u51689\u3064\u306e\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af\u3092\u901a\u3057\u3066\u3001cURL\u3092\u4f7f\u3044\u3053\u306a\u3059\u305f\u3081\u306b\u5fc5\u8981\u306a\u77e5\u8b58\u3068\u30b9\u30ad\u30eb\u3092\u8eab\u306b\u3064\u3051\u3001\u3088\u308a\u5805\u7262\u3067\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u9ad8\u3044PHP\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u5f79\u7acb\u3066\u3066\u3044\u305f\u3060\u3051\u308c\u3070\u5e78\u3044\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u305d\u308c\u3067\u306f\u65e9\u901f\u3001PHP\u3067cURL\u3092\u4f7f\u7528\u3059\u308b\u57fa\u672c\u304b\u3089\u5b66\u3093\u3067\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-1\">PHP \u3067 cURL \u3092\u4f7f\u7528\u3059\u308b\u57fa\u672c<\/h2>\n\n\n\n<p>\u5916\u90e8\u306eWeb\u30b5\u30fc\u30d3\u30b9\u3084API\u3068\u9023\u643a\u3059\u308bPHP\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u969b\u3001cURL\u306f\u5fc5\u9808\u306e\u30c4\u30fc\u30eb\u3067\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001cURL\u306e\u57fa\u672c\u7684\u306a\u6982\u5ff5\u304b\u3089\u3001PHP\u3067\u306e\u5229\u7528\u65b9\u6cd5\u3001\u305d\u3057\u3066\u6700\u521d\u306e\u4e00\u6b69\u3068\u306a\u308bGET\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u9001\u4fe1\u65b9\u6cd5\u307e\u3067\u3092\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">cURL \u3068\u306f\uff1f\u305d\u306e\u5f79\u5272\u3068\u91cd\u8981\u6027<\/h3>\n\n\n\n<p>cURL\uff08Client URL Library\uff09\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30b5\u30fc\u30d0\u30fc\u3068\u30c7\u30fc\u30bf\u3092\u3084\u308a\u53d6\u308a\u3059\u308b\u305f\u3081\u306e\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u304a\u3088\u3073\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002HTTP\u3001HTTPS\u3001FTP\u3001FTPS\u3001SCP\u3001SFTP\u3001LDAP\u3001SMTP\u306a\u3069\u591a\u304f\u306e\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>PHP\u306b\u304a\u3051\u308bcURL\u306e\u4e3b\u306a\u5f79\u5272\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u5916\u90e8API\u3078\u306e\u30a2\u30af\u30bb\u30b9<\/strong>: RESTful API\u3084SOAP Web\u30b5\u30fc\u30d3\u30b9\u306a\u3069\u3078\u306eHTTP\u30ea\u30af\u30a8\u30b9\u30c8<\/li>\n\n\n\n<li><strong>\u30d5\u30a1\u30a4\u30eb\u8ee2\u9001<\/strong>: \u30ea\u30e2\u30fc\u30c8\u30b5\u30fc\u30d0\u30fc\u4e0a\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3084\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9<\/li>\n\n\n\n<li><strong>\u30a6\u30a7\u30d6\u30b9\u30af\u30ec\u30a4\u30d4\u30f3\u30b0<\/strong>: \u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u53d6\u5f97\u3068\u89e3\u6790<\/li>\n\n\n\n<li><strong>\u30b5\u30fc\u30d0\u30fc\u9593\u901a\u4fe1<\/strong>: \u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3067\u306e\u30b5\u30fc\u30d3\u30b9\u9593\u901a\u4fe1<\/li>\n\n\n\n<li><strong>OAuth\u8a8d\u8a3c<\/strong>: API\u30ad\u30fc\u3084\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u3063\u305f\u8a8d\u8a3c\u51e6\u7406<\/li>\n<\/ul>\n\n\n\n<p>\u6a19\u6e96\u306ePHP\u95a2\u6570\uff08\u4f8b\uff1a<code>file_get_contents()<\/code>\uff09\u3067\u3082HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u306f\u53ef\u80fd\u3067\u3059\u304c\u3001cURL\u306f\u3088\u308a\u67d4\u8edf\u3067\u9ad8\u5ea6\u306a\u5236\u5fa1\u304c\u53ef\u80fd\u3067\u3059\u3002\u5177\u4f53\u7684\u306b\u306f\u3001\u8a73\u7d30\u306a\u30d8\u30c3\u30c0\u30fc\u8a2d\u5b9a\u3001\u8907\u96d1\u306a\u8a8d\u8a3c\u51e6\u7406\u3001\u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u306e\u9001\u4fe1\u3001\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a\u3001\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u5236\u5fa1\u306a\u3069\u3001\u30d7\u30ed\u30d5\u30a7\u30c3\u30b7\u30e7\u30ca\u30eb\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u306f\u6b20\u304b\u305b\u306a\u3044\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">PHP \u3067 cURL \u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u74b0\u5883\u8a2d\u5b9a<\/h3>\n\n\n\n<p>PHP\u3067cURL\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001PHP\u306bcURL\u62e1\u5f35\u6a5f\u80fd\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u304a\u308a\u3001\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u624b\u9806\u3067\u78ba\u8a8d\u30fb\u8a2d\u5b9a\u304c\u53ef\u80fd\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-4\">1. cURL\u62e1\u5f35\u306e\u78ba\u8a8d<\/h4>\n\n\n\n<p>\u307e\u305a\u3001cURL\u62e1\u5f35\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002\u7c21\u5358\u306a\u78ba\u8a8d\u65b9\u6cd5\u306f\u4ee5\u4e0b\u306ePHP\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ cURL\u62e1\u5f35\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\nif (function_exists('curl_version')) {\n    $curl_info = curl_version();\n    echo \"cURL\u6709\u52b9: \u30d0\u30fc\u30b8\u30e7\u30f3 \" . $curl_info['version'] . \"\\n\";\n    echo \"SSL\u5bfe\u5fdc\u30d0\u30fc\u30b8\u30e7\u30f3: \" . $curl_info['ssl_version'] . \"\\n\";\n} else {\n    echo \"cURL\u62e1\u5f35\u304c\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\";\n}\n?&gt;\n<\/pre>\n\n\n\n<p>\u307e\u305f\u3001<code>phpinfo()<\/code>\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u8a73\u7d30\u60c5\u5831\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nphpinfo();\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001PHP\u306e\u8a2d\u5b9a\u60c5\u5831\u304c\u8868\u793a\u3055\u308c\u3001\u300ccURL\u300d\u30bb\u30af\u30b7\u30e7\u30f3\u304c\u3042\u308c\u3070cURL\u62e1\u5f35\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-5\">2. cURL\u62e1\u5f35\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff08\u5fc5\u8981\u306a\u5834\u5408\uff09<\/h4>\n\n\n\n<p>cURL\u62e1\u5f35\u304c\u6709\u52b9\u3067\u306a\u3044\u5834\u5408\u3001OS\u306b\u5fdc\u3058\u3066\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<p><strong>Ubuntu\/Debian\u7cfb\u306e\u5834\u5408<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo apt-get install php-curl\n<\/pre>\n\n\n\n<p><strong>Red Hat\/CentOS\u7cfb\u306e\u5834\u5408<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo yum install php-curl\n<\/pre>\n\n\n\n<p><strong>Windows\uff08XAMPP\/WAMP\u306a\u3069\uff09\u306e\u5834\u5408<\/strong>: php.ini\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304d\u3001\u4ee5\u4e0b\u306e\u884c\u306e\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\uff08\u884c\u982d\u306e\u201d;\u201d\uff09\u3092\u524a\u9664\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">;extension=curl\n<\/pre>\n\n\n\n<p>\u3092<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">extension=curl\n<\/pre>\n\n\n\n<p>\u306b\u5909\u66f4\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5f8c\u306fWeb\u30b5\u30fc\u30d0\u30fc\uff08Apache\u3001Nginx\u306a\u3069\uff09\u3092\u518d\u8d77\u52d5\u3057\u3066\u3001\u5909\u66f4\u3092\u53cd\u6620\u3055\u305b\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\">\u57fa\u672c\u7684\u306aGET\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u9001\u4fe1\u65b9\u6cd5<\/h3>\n\n\n\n<p>PHP\u3067cURL\u3092\u4f7f\u7528\u3057\u305f\u6700\u3082\u57fa\u672c\u7684\u306a\u64cd\u4f5c\u306f\u3001GET\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u9001\u4fe1\u3067\u3059\u3002\u4ee5\u4e0b\u306b\u57fa\u672c\u7684\u306a\u624b\u9806\u3068\u30b3\u30fc\u30c9\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-7\">\u57fa\u672c\u7684\u306aGET\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6d41\u308c<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u521d\u671f\u5316\u3059\u308b\uff08<code>curl_init()<\/code>\uff09<\/li>\n\n\n\n<li>\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3059\u308b\uff08<code>curl_setopt()<\/code>\u307e\u305f\u306f<code>curl_setopt_array()<\/code>\uff09<\/li>\n\n\n\n<li>\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u3001\u7d50\u679c\u3092\u53d6\u5f97\u3059\u308b\uff08<code>curl_exec()<\/code>\uff09<\/li>\n\n\n\n<li>\u30ea\u30bd\u30fc\u30b9\u3092\u89e3\u653e\u3059\u308b\uff08<code>curl_close()<\/code>\uff09<\/li>\n\n\n\n<li>\u7d50\u679c\u3092\u51e6\u7406\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-8\">\u30b7\u30f3\u30d7\u30eb\u306aGET\u30ea\u30af\u30a8\u30b9\u30c8\u4f8b<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ URL\u3092\u6307\u5b9a\n$url = 'https:\/\/api.example.com\/data';\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u521d\u671f\u5316\n$ch = curl_init();\n\n\/\/ cURL\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,              \/\/ \u30a2\u30af\u30bb\u30b9\u3059\u308bURL\n    CURLOPT_RETURNTRANSFER =&gt; true,   \/\/ \u7d50\u679c\u3092\u6587\u5b57\u5217\u3067\u8fd4\u3059\n    CURLOPT_FOLLOWLOCATION =&gt; true,   \/\/ \u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3092\u81ea\u52d5\u7684\u306b\u8ffd\u8de1\n    CURLOPT_SSL_VERIFYPEER =&gt; true,   \/\/ SSL\u8a3c\u660e\u66f8\u306e\u691c\u8a3c\u3092\u6709\u52b9\u5316\n    CURLOPT_SSL_VERIFYHOST =&gt; 2,      \/\/ \u30db\u30b9\u30c8\u540d\u306e\u691c\u8a3c\u30ec\u30d9\u30eb\n    CURLOPT_TIMEOUT =&gt; 30             \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\uff08\u79d2\uff09\n]);\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3057\u3001\u7d50\u679c\u3092\u53d6\u5f97\n$response = curl_exec($ch);\n\n\/\/ \u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30af\nif ($response === false) {\n    $error = curl_error($ch);\n    $errno = curl_errno($ch);\n    curl_close($ch);\n    die(\"cURL\u30a8\u30e9\u30fc ({$errno}): {$error}\");\n}\n\n\/\/ HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u3092\u53d6\u5f97\n$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u9589\u3058\u308b\ncurl_close($ch);\n\n\/\/ \u7d50\u679c\u306e\u51e6\u7406\nif ($http_code == 200) {\n    \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u304cJSON\u306e\u5834\u5408\u306f\u30c7\u30b3\u30fc\u30c9\n    $data = json_decode($response, true);\n    \n    \/\/ \u30c7\u30fc\u30bf\u306e\u51e6\u7406\n    print_r($data);\n} else {\n    echo \"HTTP\u30a8\u30e9\u30fc: \u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9 {$http_code}\\n\";\n    echo $response;\n}\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u4f8b\u3067\u306f\u3001\u6307\u5b9a\u3057\u305fURL\u306bGET\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3057\u3001\u8fd4\u3063\u3066\u304d\u305f\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u51e6\u7406\u3057\u3066\u3044\u307e\u3059\u3002<code>CURLOPT_RETURNTRANSFER<\/code>\u30aa\u30d7\u30b7\u30e7\u30f3\u3092<code>true<\/code>\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001<code>curl_exec()<\/code>\u306e\u623b\u308a\u5024\u3068\u3057\u3066\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u5185\u5bb9\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-9\">\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u306e\u30dd\u30a4\u30f3\u30c8<\/h4>\n\n\n\n<p>cURL\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u306f\u69d8\u3005\u306a\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u4e3b\u306a\u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30af\u30dd\u30a4\u30f3\u30c8\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>cURL\u95a2\u6570\u306e\u30a8\u30e9\u30fc<\/strong>\uff1a\u63a5\u7d9a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3001DNS\u30a8\u30e9\u30fc\u306a\u3069\uff08<code>curl_error()<\/code>\u3067\u53d6\u5f97\uff09<\/li>\n\n\n\n<li><strong>HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9<\/strong>\uff1a404\uff08Not Found\uff09\u3001500\uff08Internal Server Error\uff09\u306a\u3069<\/li>\n\n\n\n<li><strong>\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u5f62\u5f0f\u30a8\u30e9\u30fc<\/strong>\uff1aJSON\u306e\u30d1\u30fc\u30b9\u30a8\u30e9\u30fc\u306a\u3069<\/li>\n<\/ol>\n\n\n\n<p>\u5b9f\u969b\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30a8\u30e9\u30fc\u3092\u9069\u5207\u306b\u51e6\u7406\u3059\u308b\u30b3\u30fc\u30c9\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u4ee5\u4e0a\u304c\u3001PHP\u3067cURL\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u4e8b\u9805\u3067\u3059\u3002\u6b21\u306e\u7ae0\u3067\u306f\u3001PHP\u306ecURL\u95a2\u6570\u306e\u8a73\u7d30\u3068\u3001\u6b63\u3057\u3044\u4f7f\u3044\u65b9\u306b\u3064\u3044\u3066\u6df1\u6398\u308a\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-10\">PHP \u306e cURL \u95a2\u6570\u3092\u7406\u89e3\u3059\u308b<\/h2>\n\n\n\n<p>PHP\u3067cURL\u3092\u52b9\u679c\u7684\u306b\u4f7f\u3044\u3053\u306a\u3059\u306b\u306f\u3001\u57fa\u672c\u3068\u306a\u308b\u95a2\u6570\u7fa4\u3068\u305d\u306e\u4f7f\u3044\u65b9\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001cURL\u306e\u4e3b\u8981\u306a\u95a2\u6570\u3068\u30aa\u30d7\u30b7\u30e7\u30f3\u3001\u305d\u3057\u3066\u9069\u5207\u306a\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406\u306e\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-11\">curl_init()\u3001curl_setopt()\u3001curl_exec()\u306e\u57fa\u672c<\/h3>\n\n\n\n<p>PHP\u306ecURL\u6a5f\u80fd\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u4e2d\u6838\u3068\u306a\u308b\u95a2\u6570\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u6700\u3082\u57fa\u672c\u7684\u306a3\u3064\u306e\u95a2\u6570\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-12\">curl_init()<\/h4>\n\n\n\n<p><code>curl_init()<\/code> \u95a2\u6570\u306f\u3001\u65b0\u3057\u3044cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u521d\u671f\u5316\u3057\u3001cURL\u30cf\u30f3\u30c9\u30eb\u3092\u8fd4\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\n$ch = curl_init();  \/\/ URL\u306a\u3057\u3067\u521d\u671f\u5316\n\n\/\/ \u307e\u305f\u306f\u3001URL\u3092\u6307\u5b9a\u3057\u3066\u521d\u671f\u5316\n$ch = curl_init('https:\/\/api.example.com\/data');\n<\/pre>\n\n\n\n<p>\u5f15\u6570\u3068\u3057\u3066URL\u3092\u6e21\u3059\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u304c\u3001\u5f8c\u3067 <code>curl_setopt()<\/code> \u3092\u4f7f\u3063\u3066\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u8fd4\u308a\u5024\u306f\u300ccURL\u30cf\u30f3\u30c9\u30eb\u300d\u3068\u547c\u3070\u308c\u308b\u30ea\u30bd\u30fc\u30b9\u3067\u3001\u3053\u306e\u30cf\u30f3\u30c9\u30eb\u3092\u4f7f\u3063\u3066\u4ee5\u964d\u306ecURL\u64cd\u4f5c\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-13\">curl_setopt()<\/h4>\n\n\n\n<p><code>curl_setopt()<\/code> \u95a2\u6570\u306f\u3001cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u57fa\u672c\u69cb\u6587\ncurl_setopt($ch, CURLOPT_\u30aa\u30d7\u30b7\u30e7\u30f3\u540d, \u5024);\n\n\/\/ \u4f8b: URL\u3092\u8a2d\u5b9a\ncurl_setopt($ch, CURLOPT_URL, 'https:\/\/api.example.com\/data');\n\n\/\/ \u4f8b: \u7d50\u679c\u3092\u6587\u5b57\u5217\u3068\u3057\u3066\u8fd4\u3059\u3088\u3046\u8a2d\u5b9a\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n<\/pre>\n\n\n\n<p>\u7b2c1\u5f15\u6570\u306b\u306f <code>curl_init()<\/code> \u3067\u53d6\u5f97\u3057\u305fcURL\u30cf\u30f3\u30c9\u30eb\u3001\u7b2c2\u5f15\u6570\u306b\u306fCURLOPT_\u3067\u59cb\u307e\u308b\u30aa\u30d7\u30b7\u30e7\u30f3\u5b9a\u6570\u3001\u7b2c3\u5f15\u6570\u306b\u306f\u305d\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u8a2d\u5b9a\u3059\u308b\u5024\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u8907\u6570\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u307e\u3068\u3081\u3066\u8a2d\u5b9a\u3059\u308b\u5834\u5408\u306f\u3001<code>curl_setopt_array()<\/code> \u95a2\u6570\u304c\u4fbf\u5229\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u8907\u6570\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u307e\u3068\u3081\u3066\u8a2d\u5b9a\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; 'https:\/\/api.example.com\/data',\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_TIMEOUT =&gt; 30,\n    CURLOPT_FOLLOWLOCATION =&gt; true\n]);\n<\/pre>\n\n\n\n<p>\u3053\u306e\u65b9\u6cd5\u306f\u3001\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u304c\u5411\u4e0a\u3057\u3001\u95a2\u6570\u547c\u3073\u51fa\u3057\u306e\u56de\u6570\u3082\u6e1b\u3089\u305b\u308b\u305f\u3081\u304a\u3059\u3059\u3081\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-14\">curl_exec()<\/h4>\n\n\n\n<p><code>curl_exec()<\/code> \u95a2\u6570\u306f\u3001\u8a2d\u5b9a\u3055\u308c\u305fcURL\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\n$response = curl_exec($ch);\n\n\/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u78ba\u8a8d\u3068\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\nif ($response === false) {\n    $error = curl_error($ch);\n    echo \"cURL\u30a8\u30e9\u30fc: \" . $error;\n} else {\n    \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406\n    echo $response;\n}\n<\/pre>\n\n\n\n<p><code>curl_exec()<\/code> \u306e\u8fd4\u308a\u5024\u306f\u3001<code>CURLOPT_RETURNTRANSFER<\/code> \u30aa\u30d7\u30b7\u30e7\u30f3\u304c <code>true<\/code> \u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u5185\u5bb9\uff08\u6587\u5b57\u5217\uff09\u306b\u306a\u308a\u307e\u3059\u3002\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u76f4\u63a5\u51fa\u529b\u3055\u308c\u3001\u6210\u529f\u6642\u306f <code>true<\/code>\u3001\u5931\u6557\u6642\u306f <code>false<\/code> \u3092\u8fd4\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u5b9f\u884c\u306b\u5931\u6557\u3057\u305f\u5834\u5408\u306f\u3001<code>curl_error()<\/code> \u95a2\u6570\u3067\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u3001<code>curl_errno()<\/code> \u95a2\u6570\u3067\u30a8\u30e9\u30fc\u756a\u53f7\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-15\">\u4e3b\u8981\u306aCURLOPT\u30aa\u30d7\u30b7\u30e7\u30f3\u3068\u305d\u306e\u4f7f\u3044\u65b9<\/h3>\n\n\n\n<p>cURL\u306b\u306f\u6570\u591a\u304f\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u7279\u306b\u3088\u304f\u4f7f\u308f\u308c\u308b\u91cd\u8981\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u30ab\u30c6\u30b4\u30ea\u5225\u306b\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-16\">\u57fa\u672c\u7684\u306a\u30ea\u30af\u30a8\u30b9\u30c8\u8a2d\u5b9a<\/h4>\n\n\n<div id=\"id-331a83cf-2754-4151-bf31-42722d077cd3\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30aa\u30d7\u30b7\u30e7\u30f3<\/th><th>\u8aac\u660e<\/th><th>\u5024\u306e\u578b<\/th><th>\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>CURLOPT_URL<\/td><td>\u30a2\u30af\u30bb\u30b9\u3059\u308bURL<\/td><td>\u6587\u5b57\u5217<\/td><td><code>'https:\/\/api.example.com'<\/code><\/td><\/tr><tr><td>CURLOPT_RETURNTRANSFER<\/td><td>\u5b9f\u884c\u7d50\u679c\u3092\u6587\u5b57\u5217\u3068\u3057\u3066\u8fd4\u3059<\/td><td>\u771f\u507d\u5024<\/td><td><code>true<\/code>\/<code>false<\/code><\/td><\/tr><tr><td>CURLOPT_TIMEOUT<\/td><td>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u79d2\u6570<\/td><td>\u6574\u6570<\/td><td><code>30<\/code> (30\u79d2)<\/td><\/tr><tr><td>CURLOPT_CONNECTTIMEOUT<\/td><td>\u63a5\u7d9a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u79d2\u6570<\/td><td>\u6574\u6570<\/td><td><code>5<\/code> (5\u79d2)<\/td><\/tr><tr><td>CURLOPT_FOLLOWLOCATION<\/td><td>\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3092\u81ea\u52d5\u7684\u306b\u8ffd\u8de1<\/td><td>\u771f\u507d\u5024<\/td><td><code>true<\/code>\/<code>false<\/code><\/td><\/tr><tr><td>CURLOPT_MAXREDIRS<\/td><td>\u6700\u5927\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u56de\u6570<\/td><td>\u6574\u6570<\/td><td><code>10<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"i-17\">HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u8a2d\u5b9a<\/h4>\n\n\n<div id=\"id-f5d80fd8-3b5b-4c81-8b3d-c2c402228475\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30aa\u30d7\u30b7\u30e7\u30f3<\/th><th>\u8aac\u660e<\/th><th>\u5024\u306e\u578b<\/th><th>\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>CURLOPT_POST<\/td><td>POST\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u3057\u3066\u9001\u4fe1<\/td><td>\u771f\u507d\u5024<\/td><td><code>true<\/code><\/td><\/tr><tr><td>CURLOPT_POSTFIELDS<\/td><td>POST\u30c7\u30fc\u30bf<\/td><td>\u6587\u5b57\u5217\/\u914d\u5217<\/td><td><code>'name=value'<\/code>\u307e\u305f\u306f<code>['name' =&gt; 'value']<\/code><\/td><\/tr><tr><td>CURLOPT_CUSTOMREQUEST<\/td><td>\u30ab\u30b9\u30bf\u30e0HTTP\u30e1\u30bd\u30c3\u30c9<\/td><td>\u6587\u5b57\u5217<\/td><td><code>'PUT'<\/code>, <code>'DELETE'<\/code> \u306a\u3069<\/td><\/tr><tr><td>CURLOPT_HTTPHEADER<\/td><td>HTTP\u30d8\u30c3\u30c0\u30fc<\/td><td>\u914d\u5217<\/td><td><code>['Content-Type: application\/json']<\/code><\/td><\/tr><tr><td>CURLOPT_USERAGENT<\/td><td>User-Agent\u306e\u6307\u5b9a<\/td><td>\u6587\u5b57\u5217<\/td><td><code>'MyApp\/1.0'<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"i-18\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a2d\u5b9a<\/h4>\n\n\n<div id=\"id-2c8d704f-3595-4870-8d40-065f55254f7c\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30aa\u30d7\u30b7\u30e7\u30f3<\/th><th>\u8aac\u660e<\/th><th>\u5024\u306e\u578b<\/th><th>\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>CURLOPT_SSL_VERIFYPEER<\/td><td>SSL\u8a3c\u660e\u66f8\u306e\u691c\u8a3c<\/td><td>\u771f\u507d\u5024<\/td><td><code>true<\/code> (\u63a8\u5968)<\/td><\/tr><tr><td>CURLOPT_SSL_VERIFYHOST<\/td><td>\u30db\u30b9\u30c8\u540d\u306e\u691c\u8a3c<\/td><td>\u6574\u6570<\/td><td><code>2<\/code> (\u63a8\u5968)<\/td><\/tr><tr><td>CURLOPT_SSLVERSION<\/td><td>SSL\u30d0\u30fc\u30b8\u30e7\u30f3<\/td><td>\u6574\u6570<\/td><td><code>CURL_SSLVERSION_TLSv1_2<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"i-19\">\u9ad8\u5ea6\u306a\u8a2d\u5b9a<\/h4>\n\n\n<div id=\"id-7b3dc4ef-218c-42a7-b9ae-be5db37e9f82\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30aa\u30d7\u30b7\u30e7\u30f3<\/th><th>\u8aac\u660e<\/th><th>\u5024\u306e\u578b<\/th><th>\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>CURLOPT_VERBOSE<\/td><td>\u8a73\u7d30\u306a\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3092\u51fa\u529b<\/td><td>\u771f\u507d\u5024<\/td><td><code>true<\/code><\/td><\/tr><tr><td>CURLOPT_HEADER<\/td><td>\u30ec\u30b9\u30dd\u30f3\u30b9\u306b\u30d8\u30c3\u30c0\u30fc\u3092\u542b\u3081\u308b<\/td><td>\u771f\u507d\u5024<\/td><td><code>true<\/code><\/td><\/tr><tr><td>CURLOPT_NOBODY<\/td><td>\u30dc\u30c7\u30a3\u3092\u53d7\u4fe1\u3057\u306a\u3044\uff08HEAD\u30ea\u30af\u30a8\u30b9\u30c8\uff09<\/td><td>\u771f\u507d\u5024<\/td><td><code>true<\/code><\/td><\/tr><tr><td>CURLOPT_FAILONERROR<\/td><td>HTTP\u30a8\u30e9\u30fc\u6642\u306b\u5931\u6557\u3068\u3057\u3066\u6271\u3046<\/td><td>\u771f\u507d\u5024<\/td><td><code>true<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u5b9f\u969b\u306e\u30b3\u30fc\u30c9\u4f8b\uff1a\u8907\u6570\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u305f\u30b1\u30fc\u30b9<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u521d\u671f\u5316\n$ch = curl_init();\n\n\/\/ \u8a73\u7d30\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; 'https:\/\/api.example.com\/data',\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_FOLLOWLOCATION =&gt; true,\n    CURLOPT_MAXREDIRS =&gt; 5,\n    CURLOPT_TIMEOUT =&gt; 30,\n    CURLOPT_HTTP_VERSION =&gt; CURL_HTTP_VERSION_1_1,\n    CURLOPT_CUSTOMREQUEST =&gt; 'GET',\n    CURLOPT_HTTPHEADER =&gt; [\n        'Accept: application\/json',\n        'Cache-Control: no-cache'\n    ],\n    CURLOPT_SSL_VERIFYPEER =&gt; true,\n    CURLOPT_SSL_VERIFYHOST =&gt; 2\n]);\n\n$response = curl_exec($ch);\n$err = curl_error($ch);\n\ncurl_close($ch);\n\nif ($err) {\n    echo \"cURL\u30a8\u30e9\u30fc: \" . $err;\n} else {\n    $data = json_decode($response, true);\n    print_r($data);\n}\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-20\">curl_close()\u306e\u91cd\u8981\u6027\u3068\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406<\/h3>\n\n\n\n<p><code>curl_close()<\/code> \u95a2\u6570\u306f\u3001cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u7d42\u4e86\u3057\u3001\u95a2\u9023\u3059\u308b\u30ea\u30bd\u30fc\u30b9\u3092\u89e3\u653e\u3057\u307e\u3059\u3002\u3053\u306e\u95a2\u6570\u306e\u6b63\u3057\u3044\u4f7f\u7528\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30e1\u30e2\u30ea\u7ba1\u7406\u306b\u304a\u3044\u3066\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u9589\u3058\u308b\ncurl_close($ch);\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-21\">\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406\u306e\u91cd\u8981\u6027<\/h4>\n\n\n\n<p>PHP\u30b9\u30af\u30ea\u30d7\u30c8\u3067cURL\u3092\u4f7f\u7528\u3059\u308b\u969b\u3001\u7279\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u72b6\u6cc1\u3067\u306f\u9069\u5207\u306a\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406\u304c\u91cd\u8981\u306b\u306a\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u9577\u6642\u9593\u5b9f\u884c\u3055\u308c\u308b\u30b9\u30af\u30ea\u30d7\u30c8<\/strong>\uff1a\u30d0\u30c3\u30c1\u51e6\u7406\u3084\u30c7\u30fc\u30e2\u30f3\u30d7\u30ed\u30bb\u30b9\u306a\u3069<\/li>\n\n\n\n<li><strong>\u591a\u6570\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8<\/strong>\uff1a\u5927\u91cf\u306eAPI\u30b3\u30fc\u30eb\u3084\u4e26\u5217\u51e6\u7406<\/li>\n\n\n\n<li><strong>\u9ad8\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3<\/strong>\uff1a\u591a\u304f\u306e\u30e6\u30fc\u30b6\u30fc\u304c\u540c\u6642\u306b\u30a2\u30af\u30bb\u30b9<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u72b6\u6cc1\u3067\u306f\u3001<code>curl_close()<\/code> \u3092\u9069\u5207\u306b\u547c\u3073\u51fa\u3055\u306a\u3044\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u30e1\u30e2\u30ea\u30ea\u30fc\u30af<\/strong>\uff1a\u89e3\u653e\u3055\u308c\u306a\u3044\u30ea\u30bd\u30fc\u30b9\u304c\u84c4\u7a4d<\/li>\n\n\n\n<li><strong>\u30aa\u30fc\u30d7\u30f3\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30b9\u30af\u30ea\u30d7\u30bf\u306e\u67af\u6e07<\/strong>\uff1aOS\u5236\u9650\u306b\u5230\u9054\u3059\u308b\u53ef\u80fd\u6027<\/li>\n\n\n\n<li><strong>\u5168\u4f53\u7684\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u4f4e\u4e0b<\/strong>\uff1a\u4e0d\u8981\u306a\u30ea\u30bd\u30fc\u30b9\u304c\u6d88\u8cbb\u3055\u308c\u308b<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-22\">\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<p>cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406\u306b\u95a2\u3059\u308b\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4f7f\u3044\u7d42\u308f\u3063\u305f\u3089\u3059\u3050\u306b\u9589\u3058\u308b<\/strong>\uff1a\u5fc5\u8981\u306a\u51e6\u7406\u304c\u5b8c\u4e86\u3057\u305f\u3089\u901f\u3084\u304b\u306b <code>curl_close()<\/code> \u3092\u547c\u3073\u51fa\u3059<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$response = curl_exec($ch);\n\/\/ \u5fc5\u8981\u306a\u60c5\u5831\u3092\u53d6\u5f97\n$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n\/\/ \u51e6\u7406\u304c\u7d42\u308f\u3063\u305f\u3089\u3059\u3050\u306b\u9589\u3058\u308b\ncurl_close($ch);\n\/\/ \u305d\u306e\u5f8c\u3067\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u51e6\u7406\nprocess_data($response);\n<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>try-finally\u30d6\u30ed\u30c3\u30af\u306e\u4f7f\u7528<\/strong>\uff1a\u4f8b\u5916\u304c\u767a\u751f\u3057\u3066\u3082\u78ba\u5b9f\u306b\u30ea\u30bd\u30fc\u30b9\u3092\u89e3\u653e<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ch = curl_init();\ntry {\n    \/\/ cURL\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\n    curl_setopt_array($ch, [ \/* \u30aa\u30d7\u30b7\u30e7\u30f3 *\/ ]);\n    \/\/ \u5b9f\u884c\n    $response = curl_exec($ch);\n    \/\/ \u7d50\u679c\u306e\u51e6\u7406\n    if ($response === false) {\n        throw new Exception(curl_error($ch));\n    }\n    return $response;\n} finally {\n    \/\/ \u4f8b\u5916\u304c\u767a\u751f\u3057\u3066\u3082\u5fc5\u305a\u5b9f\u884c\u3055\u308c\u308b\n    curl_close($ch);\n}\n<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u95a2\u6570\u5185\u3067\u306e\u5b8c\u7d50<\/strong>\uff1acURL\u30cf\u30f3\u30c9\u30eb\u3092\u95a2\u6570\u306e\u5916\u306b\u6f0f\u3089\u3055\u306a\u3044<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function make_api_request($url, $options = []) {\n    $ch = curl_init();\n    curl_setopt($ch, CURLOPT_URL, $url);\n    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n    \n    \/\/ \u8ffd\u52a0\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u3042\u308c\u3070\u8a2d\u5b9a\n    if (!empty($options)) {\n        curl_setopt_array($ch, $options);\n    }\n    \n    $response = curl_exec($ch);\n    $error = curl_error($ch);\n    $info = curl_getinfo($ch);\n    \n    \/\/ \u91cd\u8981: \u30cf\u30f3\u30c9\u30eb\u3092\u9589\u3058\u308b\n    curl_close($ch);\n    \n    \/\/ \u5fc5\u8981\u306a\u60c5\u5831\u3092\u8fd4\u3059\n    return [\n        'response' =&gt; $response,\n        'error' =&gt; $error,\n        'info' =&gt; $info\n    ];\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$result = make_api_request('https:\/\/api.example.com\/data');\n<\/pre>\n\n\n\n<p>\u4ee5\u4e0a\u306e\u3088\u3046\u306b\u3001PHP\u306ecURL\u95a2\u6570\u3092\u7406\u89e3\u3057\u3001\u9069\u5207\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u5916\u90e8API\u3084Web\u30b5\u30fc\u30d3\u30b9\u3068\u306e\u9023\u643a\u3092\u52b9\u7387\u7684\u304b\u3064\u5b89\u5168\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u7ae0\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u57fa\u672c\u77e5\u8b58\u3092\u8e0f\u307e\u3048\u3066\u3001\u3088\u308a\u5b9f\u8df5\u7684\u306a\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d39\u4ecb\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-23\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af1\uff1aPOST\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u9001\u4fe1<\/h2>\n\n\n\n<p>API\u3084Web\u30b5\u30fc\u30d3\u30b9\u3068\u306e\u9023\u643a\u3067\u306f\u3001GET\u30ea\u30af\u30a8\u30b9\u30c8\u3060\u3051\u3067\u306a\u304f\u3001POST\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4f7f\u3063\u3066\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5834\u9762\u3082\u591a\u304f\u3042\u308a\u307e\u3059\u3002PHP\u306ecURL\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u69d8\u3005\u306a\u5f62\u5f0f\u306ePOST\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u67d4\u8edf\u306b\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001\u4e00\u822c\u7684\u306a3\u3064\u306ePOST\u30c7\u30fc\u30bf\u5f62\u5f0f\u306e\u9001\u4fe1\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-24\">\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u306e\u9001\u4fe1\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u6700\u3082\u4e00\u822c\u7684\u306aPOST\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5f62\u5f0f\u306f\u3001HTML\u30d5\u30a9\u30fc\u30e0\u304b\u3089\u9001\u4fe1\u3055\u308c\u308b\u306e\u3068\u540c\u3058\u300capplication\/x-www-form-urlencoded\u300d\u5f62\u5f0f\u3067\u3059\u3002\u3053\u306e\u5f62\u5f0f\u3067\u306f\u3001\u30ad\u30fc\u3068\u5024\u306e\u30da\u30a2\u304c\u300c&amp;\u300d\u3067\u533a\u5207\u3089\u308c\u3001URL\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-25\">\u57fa\u672c\u7684\u306a\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u306e\u9001\u4fe1<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ POST\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u9001\u4fe1\u5148URL\n$url = 'https:\/\/api.example.com\/submit-form';\n\n\/\/ \u9001\u4fe1\u3059\u308b\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\n$postData = [\n    'username' =&gt; 'testuser',\n    'email' =&gt; 'test@example.com',\n    'message' =&gt; '\u3053\u308c\u306f\u30c6\u30b9\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u3059'\n];\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u521d\u671f\u5316\n$ch = curl_init();\n\n\/\/ \u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,                \/\/ \u9001\u4fe1\u5148URL\n    CURLOPT_RETURNTRANSFER =&gt; true,     \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u6587\u5b57\u5217\u3067\u8fd4\u3059\n    CURLOPT_POST =&gt; true,               \/\/ POST\u30ea\u30af\u30a8\u30b9\u30c8\n    CURLOPT_POSTFIELDS =&gt; $postData,    \/\/ POST\u30c7\u30fc\u30bf\n    CURLOPT_HTTPHEADER =&gt; [             \/\/ \u30d8\u30c3\u30c0\u30fc\u8a2d\u5b9a\n        'Content-Type: application\/x-www-form-urlencoded',\n    ]\n]);\n\n\/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\n$response = curl_exec($ch);\n\n\/\/ \u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30af\nif (curl_errno($ch)) {\n    echo '\u30a8\u30e9\u30fc: ' . curl_error($ch);\n} else {\n    \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u51e6\u7406\n    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n    echo \"\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9: {$httpCode}\\n\";\n    echo \"\u30ec\u30b9\u30dd\u30f3\u30b9: {$response}\\n\";\n}\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u9589\u3058\u308b\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001<code>CURLOPT_POST<\/code>\u3092<code>true<\/code>\u306b\u8a2d\u5b9a\u3057\u3001<code>CURLOPT_POSTFIELDS<\/code>\u306b\u9023\u60f3\u914d\u5217\u3067\u30c7\u30fc\u30bf\u3092\u6e21\u3057\u3066\u3044\u307e\u3059\u3002PHP\u306ecURL\u306f\u3001\u3053\u306e\u914d\u5217\u3092\u81ea\u52d5\u7684\u306bURL\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u305f\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u306b\u5909\u63db\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-26\">\u6ce8\u610f\u70b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30c7\u30fc\u30bf\u306e\u914d\u5217\u5f62\u5f0f<\/strong>\uff1a<code>CURLOPT_POSTFIELDS<\/code>\u306b\u306f\u9023\u60f3\u914d\u5217\u3092\u76f4\u63a5\u6e21\u305b\u307e\u3059\u304c\u3001\u3059\u3067\u306bURL\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u305f\u6587\u5b57\u5217\uff08\u4f8b\uff1a<code>name1=value1&amp;name2=value2<\/code>\uff09\u3092\u6e21\u3059\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u81ea\u52d5\u30a8\u30f3\u30b3\u30fc\u30c9<\/strong>\uff1a\u9023\u60f3\u914d\u5217\u3092\u6e21\u3059\u3068\u3001\u30ad\u30fc\u3068\u5024\u306f<code>urlencode()<\/code>\u95a2\u6570\u306b\u3088\u3063\u3066\u81ea\u52d5\u7684\u306b\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>Content-Type\u30d8\u30c3\u30c0\u30fc<\/strong>\uff1a\u901a\u5e38\u3001\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5834\u5408\u306f<code>Content-Type: application\/x-www-form-urlencoded<\/code>\u30d8\u30c3\u30c0\u30fc\u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u8a2d\u5b9a\u3055\u308c\u308b\u305f\u3081\u3001\u660e\u793a\u7684\u306b\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u660e\u793a\u3059\u308b\u3053\u3068\u3067\u30b3\u30fc\u30c9\u306e\u610f\u56f3\u304c\u660e\u78ba\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-27\">JSON\u30c7\u30fc\u30bf\u306e\u9001\u4fe1\u65b9\u6cd5<\/h3>\n\n\n\n<p>RESTful API\u3068\u306e\u9023\u643a\u3067\u306f\u3001JSON\u5f62\u5f0f\u3067\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u30b1\u30fc\u30b9\u304c\u5897\u3048\u3066\u3044\u307e\u3059\u3002JSON\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u306b\u306f\u3001<code>json_encode()<\/code>\u95a2\u6570\u3067\u30c7\u30fc\u30bf\u3092JSON\u6587\u5b57\u5217\u306b\u5909\u63db\u3057\u3001\u9069\u5207\u306aContent-Type\u30d8\u30c3\u30c0\u30fc\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ POST\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u9001\u4fe1\u5148URL\n$url = 'https:\/\/api.example.com\/api\/resource';\n\n\/\/ \u9001\u4fe1\u3059\u308bJSON\u30c7\u30fc\u30bf\n$data = [\n    'name' =&gt; '\u5c71\u7530\u592a\u90ce',\n    'age' =&gt; 30,\n    'email' =&gt; 'yamada@example.com',\n    'preferences' =&gt; [\n        'notifications' =&gt; true,\n        'theme' =&gt; 'dark'\n    ]\n];\n\n\/\/ JSON\u30a8\u30f3\u30b3\u30fc\u30c9\n$jsonData = json_encode($data, JSON_UNESCAPED_UNICODE);\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u521d\u671f\u5316\n$ch = curl_init();\n\n\/\/ \u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_POST =&gt; true,\n    CURLOPT_POSTFIELDS =&gt; $jsonData,\n    CURLOPT_HTTPHEADER =&gt; [\n        'Content-Type: application\/json',\n        'Content-Length: ' . strlen($jsonData)\n    ]\n]);\n\n\/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\n$response = curl_exec($ch);\n\n\/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u304cJSON\u306e\u5834\u5408\u306e\u30c7\u30b3\u30fc\u30c9\nif (!curl_errno($ch)) {\n    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n    \n    if ($httpCode &gt;= 200 &amp;&amp; $httpCode &lt; 300) {\n        $responseData = json_decode($response, true);\n        print_r($responseData);\n    } else {\n        echo \"\u30a8\u30e9\u30fc: HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9 {$httpCode}\\n\";\n        echo $response;\n    }\n}\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u9589\u3058\u308b\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-28\">JSON\u9001\u4fe1\u306e\u91cd\u8981\u30dd\u30a4\u30f3\u30c8<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Content-Type\u30d8\u30c3\u30c0\u30fc<\/strong>\uff1aJSON\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5834\u5408\u306f\u3001\u5fc5\u305a<code>Content-Type: application\/json<\/code>\u30d8\u30c3\u30c0\u30fc\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>JSON_UNESCAPED_UNICODE<\/strong>\uff1a\u65e5\u672c\u8a9e\u306a\u3069\u306e\u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u3092\u542b\u3080\u5834\u5408\u306f\u3001<code>json_encode()<\/code>\u306e\u7b2c2\u5f15\u6570\u306b<code>JSON_UNESCAPED_UNICODE<\/code>\u30d5\u30e9\u30b0\u3092\u6307\u5b9a\u3059\u308b\u3068\u3001\u6587\u5b57\u304cUnicode\u30a8\u30b9\u30b1\u30fc\u30d7\u3055\u308c\u305a\u306b\u8aad\u307f\u3084\u3059\u3044JSON\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>Content-Length<\/strong>\uff1a\u5927\u304d\u306aJSON\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5834\u5408\u306f\u3001<code>Content-Length<\/code>\u30d8\u30c3\u30c0\u30fc\u3092\u6b63\u78ba\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u30b5\u30fc\u30d0\u30fc\u304c\u30c7\u30fc\u30bf\u306e\u7d42\u308f\u308a\u3092\u6b63\u3057\u304f\u5224\u65ad\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-29\">\u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u306e\u9001\u4fe1\uff08\u30d5\u30a1\u30a4\u30eb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\uff09<\/h3>\n\n\n\n<p>\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306a\u3069\u3001\u30d0\u30a4\u30ca\u30ea\u30c7\u30fc\u30bf\u3092\u542b\u3080POST\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u5834\u5408\u306f\u3001\u300cmultipart\/form-data\u300d\u5f62\u5f0f\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002PHP\u306ecURL\u3067\u306f\u3001\u4ee5\u4e0b\u306e2\u3064\u306e\u65b9\u6cd5\u3067\u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-30\">1. CURLFILE\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\uff08PHP 5.5\u4ee5\u964d\uff09<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u9001\u4fe1\u5148URL\n$url = 'https:\/\/api.example.com\/upload';\n\n\/\/ \u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u306e\u30d1\u30b9\n$filePath = '\/path\/to\/image.jpg';\n\n\/\/ \u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u306e\u6e96\u5099\n$postData = [\n    'title' =&gt; '\u753b\u50cf\u30bf\u30a4\u30c8\u30eb',\n    'description' =&gt; '\u3053\u308c\u306f\u753b\u50cf\u306e\u8aac\u660e\u3067\u3059',\n    \/\/ CURLFILE\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\n    'file' =&gt; new CURLFile($filePath, 'image\/jpeg', 'image.jpg')\n];\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u521d\u671f\u5316\n$ch = curl_init();\n\n\/\/ \u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_POST =&gt; true,\n    \/\/ \u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u3068\u3057\u3066\u9001\u4fe1\n    CURLOPT_POSTFIELDS =&gt; $postData,\n    \/\/ PHP 5.5\u4ee5\u964d\u306e\u5834\u5408\u3001\u4ee5\u4e0b\u306e\u8a2d\u5b9a\u306f\u81ea\u52d5\u7684\u306b\u884c\u308f\u308c\u308b\n    CURLOPT_SAFE_UPLOAD =&gt; true\n]);\n\n\/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\n$response = curl_exec($ch);\n\n\/\/ \u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30af\nif (curl_errno($ch)) {\n    echo '\u30a8\u30e9\u30fc: ' . curl_error($ch);\n} else {\n    \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u51e6\u7406\n    echo $response;\n}\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u9589\u3058\u308b\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<p>CURLFILE\u30af\u30e9\u30b9\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306f\u4ee5\u4e0b\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9<\/strong>\uff1a\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u306e\u7d76\u5bfe\u30d1\u30b9<\/li>\n\n\n\n<li><strong>MIME\u30bf\u30a4\u30d7<\/strong>\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09\uff1a\u30d5\u30a1\u30a4\u30eb\u306eMIME\u30bf\u30a4\u30d7<\/li>\n\n\n\n<li><strong>\u30d5\u30a1\u30a4\u30eb\u540d<\/strong>\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09\uff1a\u30b5\u30fc\u30d0\u30fc\u5074\u3067\u4f7f\u7528\u3055\u308c\u308b\u30d5\u30a1\u30a4\u30eb\u540d<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-31\">2. \u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u306e\u524d\u306b<code>@<\/code>\u3092\u4ed8\u3051\u308b\u65b9\u6cd5\uff08PHP 5.5\u672a\u6e80\uff09<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u6ce8\u610f: \u3053\u306e\u65b9\u6cd5\u306fPHP 5.5\u672a\u6e80\u306e\u53e4\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u7528\u3067\u3059\n\/\/ \u6700\u65b0\u306ePHP\u3067\u306fCURLFILE\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\n\n\/\/ \u9001\u4fe1\u5148URL\n$url = 'https:\/\/api.example.com\/upload';\n\n\/\/ PHP 5.5\u672a\u6e80\u306e\u5834\u5408\n$postData = [\n    'title' =&gt; '\u753b\u50cf\u30bf\u30a4\u30c8\u30eb',\n    'description' =&gt; '\u3053\u308c\u306f\u753b\u50cf\u306e\u8aac\u660e\u3067\u3059',\n    \/\/ \u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u306e\u524d\u306b@\u3092\u4ed8\u3051\u308b\uff08\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ea\u30b9\u30af\u3042\u308a\uff09\n    'file' =&gt; '@\/path\/to\/image.jpg;type=image\/jpeg;filename=image.jpg'\n];\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u521d\u671f\u5316\n$ch = curl_init();\n\n\/\/ CURL_SAFE_UPLOAD\u3092\u30aa\u30d5\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\uff08\u975e\u63a8\u5968\uff09\ncurl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);\n\n\/\/ \u305d\u306e\u4ed6\u306e\u8a2d\u5b9a\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_POST =&gt; true,\n    CURLOPT_POSTFIELDS =&gt; $postData\n]);\n\n\/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\u3068\u7d42\u4e86\u51e6\u7406\n$response = curl_exec($ch);\ncurl_close($ch);\n\necho $response;\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-32\">\u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u9001\u4fe1\u306e\u6ce8\u610f\u70b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ea\u30b9\u30af<\/strong>\uff1aPHP 5.5\u672a\u6e80\u306e<code>@<\/code>\u8a18\u6cd5\u306f\u3001\u610f\u56f3\u3057\u306a\u3044\u30d5\u30a1\u30a4\u30eb\u304c\u9001\u4fe1\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ea\u30b9\u30af\u304c\u9ad8\u304f\u306a\u308a\u307e\u3059\u3002\u53ef\u80fd\u306a\u9650\u308a\u65b0\u3057\u3044PHP\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3001<code>CURLFile<\/code>\u30af\u30e9\u30b9\u3092\u5229\u7528\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li><strong>\u5927\u304d\u306a\u30d5\u30a1\u30a4\u30eb<\/strong>\uff1a\u5927\u304d\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u5834\u5408\u306f\u3001\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306b\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002PHP\u306e\u30e1\u30e2\u30ea\u5236\u9650\u3092\u8d85\u3048\u306a\u3044\u3088\u3046\u306b\u8a2d\u5b9a\u3092\u8abf\u6574\u3059\u308b\u304b\u3001\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u691c\u8a0e\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30d7\u30ed\u30b0\u30ec\u30b9\u30d0\u30fc<\/strong>\uff1a\u30d5\u30a1\u30a4\u30eb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306e\u9032\u884c\u72b6\u6cc1\u3092\u8ffd\u8de1\u3059\u308b\u306b\u306f\u3001<code>CURLOPT_PROGRESSFUNCTION<\/code>\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-33\">\u307e\u3068\u3081<\/h3>\n\n\n\n<p>PHP\u306ecURL\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u69d8\u3005\u306a\u5f62\u5f0f\u306ePOST\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u67d4\u8edf\u306b\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u7528\u9014\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u65b9\u6cd5\u3092\u9078\u629e\u3057\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf<\/strong> \u2013 HTML\u30d5\u30a9\u30fc\u30e0\u3068\u540c\u69d8\u306e\u30c7\u30fc\u30bf\u9001\u4fe1\u306b<\/li>\n\n\n\n<li><strong>JSON\u30c7\u30fc\u30bf<\/strong> \u2013 RESTful API\u3068\u306e\u9023\u643a\u306b<\/li>\n\n\n\n<li><strong>\u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf<\/strong> \u2013 \u30d5\u30a1\u30a4\u30eb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3084\u30d0\u30a4\u30ca\u30ea\u30c7\u30fc\u30bf\u306e\u9001\u4fe1\u306b<\/li>\n<\/ol>\n\n\n\n<p>\u30c7\u30fc\u30bf\u5f62\u5f0f\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a<code>Content-Type<\/code>\u30d8\u30c3\u30c0\u30fc\u3092\u8a2d\u5b9a\u3057\u3001\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3092\u9069\u5207\u306b\u884c\u3046\u3053\u3068\u3067\u3001\u5805\u7262\u306aAPI\u9023\u643a\u6a5f\u80fd\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u6b21\u7ae0\u3067\u306f\u3001\u30d8\u30c3\u30c0\u30fc\u3068\u30af\u30c3\u30ad\u30fc\u306e\u64cd\u4f5c\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-34\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af2\uff1a\u30d8\u30c3\u30c0\u30fc\u3068\u30af\u30c3\u30ad\u30fc\u306e\u64cd\u4f5c<\/h2>\n\n\n\n<p>HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u3088\u308a\u9ad8\u5ea6\u306b\u5236\u5fa1\u3059\u308b\u306b\u306f\u3001\u30d8\u30c3\u30c0\u30fc\u3068\u30af\u30c3\u30ad\u30fc\u306e\u64cd\u4f5c\u304c\u6b20\u304b\u305b\u307e\u305b\u3093\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001PHP\u306ecURL\u3092\u4f7f\u7528\u3057\u3066HTTP\u30d8\u30c3\u30c0\u30fc\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u3001\u30af\u30c3\u30ad\u30fc\u3092\u9001\u53d7\u4fe1\u3059\u308b\u65b9\u6cd5\u3001\u305d\u3057\u3066\u7279\u306b\u91cd\u8981\u306aContent-Type\u30d8\u30c3\u30c0\u30fc\u306e\u9069\u5207\u306a\u8a2d\u5b9a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-35\">\u30ab\u30b9\u30bf\u30e0\u30d8\u30c3\u30c0\u30fc\u306e\u8a2d\u5b9a\u65b9\u6cd5<\/h3>\n\n\n\n<p>HTTP\u30d8\u30c3\u30c0\u30fc\u306f\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u30b5\u30fc\u30d0\u30fc\u9593\u3067\u8ffd\u52a0\u60c5\u5831\u3092\u3084\u308a\u53d6\u308a\u3059\u308b\u305f\u3081\u306e\u4ed5\u7d44\u307f\u3067\u3059\u3002PHP\u306ecURL\u3067\u306f\u3001<code>CURLOPT_HTTPHEADER<\/code>\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u30ab\u30b9\u30bf\u30e0\u30d8\u30c3\u30c0\u30fc\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-36\">\u57fa\u672c\u7684\u306a\u30d8\u30c3\u30c0\u30fc\u8a2d\u5b9a<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5148URL\n$url = 'https:\/\/api.example.com\/data';\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u521d\u671f\u5316\n$ch = curl_init();\n\n\/\/ \u30ab\u30b9\u30bf\u30e0\u30d8\u30c3\u30c0\u30fc\u306e\u8a2d\u5b9a\n$headers = [\n    'Accept: application\/json',              \/\/ \u53d7\u3051\u5165\u308c\u308b\u30ec\u30b9\u30dd\u30f3\u30b9\u5f62\u5f0f\n    'Authorization: Bearer abc123token',     \/\/ \u8a8d\u8a3c\u30c8\u30fc\u30af\u30f3\n    'User-Agent: MyApp\/1.0',                 \/\/ \u30e6\u30fc\u30b6\u30fc\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\n    'X-Custom-Header: \u30ab\u30b9\u30bf\u30e0\u5024'            \/\/ \u72ec\u81ea\u30d8\u30c3\u30c0\u30fc\n];\n\n\/\/ cURL\u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_HTTPHEADER =&gt; $headers          \/\/ \u30d8\u30c3\u30c0\u30fc\u914d\u5217\u3092\u8a2d\u5b9a\n]);\n\n\/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\n$response = curl_exec($ch);\n\n\/\/ \u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30af\nif (curl_errno($ch)) {\n    echo 'cURL\u30a8\u30e9\u30fc: ' . curl_error($ch);\n} else {\n    \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u51e6\u7406\n    echo $response;\n}\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u9589\u3058\u308b\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<p><code>CURLOPT_HTTPHEADER<\/code>\u306b\u6e21\u3059\u914d\u5217\u306b\u306f\u3001\u300c\u30d8\u30c3\u30c0\u30fc\u540d: \u5024\u300d\u306e\u5f62\u5f0f\u3067\u6587\u5b57\u5217\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u8907\u6570\u306e\u30d8\u30c3\u30c0\u30fc\u3092\u8a2d\u5b9a\u3059\u308b\u5834\u5408\u306f\u3001\u305d\u308c\u305e\u308c\u3092\u914d\u5217\u306e\u8981\u7d20\u3068\u3057\u3066\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-37\">\u3088\u304f\u4f7f\u308f\u308c\u308bHTTP\u30d8\u30c3\u30c0\u30fc<\/h4>\n\n\n<div id=\"id-b7362e97-c1b8-4e15-855f-8be59cdc629b\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30d8\u30c3\u30c0\u30fc\u540d<\/th><th>\u8aac\u660e<\/th><th>\u4f7f\u7528\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>Accept<\/td><td>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u53d7\u3051\u5165\u308c\u308b\u30b3\u30f3\u30c6\u30f3\u30c4\u30bf\u30a4\u30d7<\/td><td><code>Accept: application\/json<\/code><\/td><\/tr><tr><td>Authorization<\/td><td>\u8a8d\u8a3c\u60c5\u5831<\/td><td><code>Authorization: Bearer {token}<\/code><\/td><\/tr><tr><td>User-Agent<\/td><td>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u8b58\u5225\u60c5\u5831<\/td><td><code>User-Agent: MyApp\/1.0<\/code><\/td><\/tr><tr><td>Referer<\/td><td>\u30ea\u30af\u30a8\u30b9\u30c8\u5143\u306eURL<\/td><td><code>Referer: https:\/\/example.com\/page<\/code><\/td><\/tr><tr><td>Accept-Language<\/td><td>\u5e0c\u671b\u3059\u308b\u8a00\u8a9e<\/td><td><code>Accept-Language: ja<\/code><\/td><\/tr><tr><td>X-Requested-With<\/td><td>XMLHttpRequest\u306e\u8b58\u5225<\/td><td><code>X-Requested-With: XMLHttpRequest<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"i-38\">API\u30ad\u30fc\u3092\u30d8\u30c3\u30c0\u30fc\u3067\u9001\u4fe1\u3059\u308b\u4f8b<\/h4>\n\n\n\n<p>\u591a\u304f\u306eAPI\u3067\u306f\u3001API\u30ad\u30fc\u3092\u30d8\u30c3\u30c0\u30fc\u3067\u9001\u4fe1\u3059\u308b\u3053\u3068\u304c\u6c42\u3081\u3089\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$apiKey = 'your_api_key_here';\n$url = 'https:\/\/api.example.com\/v1\/resource';\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_HTTPHEADER =&gt; [\n        'X-API-Key: ' . $apiKey,\n        'Accept: application\/json'\n    ]\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n\n$data = json_decode($response, true);\nprint_r($data);\n?&gt;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-39\">\u30af\u30c3\u30ad\u30fc\u306e\u9001\u4fe1\u3068\u53d6\u5f97<\/h3>\n\n\n\n<p>\u30af\u30c3\u30ad\u30fc\u306f\u3001HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u9593\u3067\u72b6\u614b\u3092\u4fdd\u6301\u3059\u308b\u305f\u3081\u306e\u4ed5\u7d44\u307f\u3067\u3059\u3002PHP\u306ecURL\u3067\u306f\u3001\u30af\u30c3\u30ad\u30fc\u306e\u9001\u4fe1\u3068\u53d6\u5f97\u3092\u7c21\u5358\u306b\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-40\">\u30af\u30c3\u30ad\u30fc\u3092\u9001\u4fe1\u3059\u308b<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/example.com\/secure-page';\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    \/\/ \u6587\u5b57\u5217\u3068\u3057\u3066\u30af\u30c3\u30ad\u30fc\u3092\u9001\u4fe1\n    CURLOPT_COOKIE =&gt; 'session_id=abc123; user_preference=dark_mode'\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n\necho $response;\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-41\">\u30af\u30c3\u30ad\u30fc\u3092\u53d7\u4fe1\u3057\u3066\u4fdd\u5b58\u3059\u308b<\/h4>\n\n\n\n<p>\u591a\u304f\u306eWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u8a8d\u8a3c\u5f8c\u306b\u30bb\u30c3\u30b7\u30e7\u30f3\u30af\u30c3\u30ad\u30fc\u304c\u8fd4\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3092\u4fdd\u5b58\u3057\u3066\u5f8c\u7d9a\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30ed\u30b0\u30a4\u30f3URL\n$loginUrl = 'https:\/\/example.com\/login';\n\n\/\/ \u30ed\u30b0\u30a4\u30f3\u60c5\u5831\n$postData = [\n    'username' =&gt; 'test_user',\n    'password' =&gt; 'password123'\n];\n\n\/\/ \u30af\u30c3\u30ad\u30fc\u3092\u4fdd\u5b58\u3059\u308b\u30d5\u30a1\u30a4\u30eb\n$cookieFile = '\/tmp\/cookies.txt';\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u521d\u671f\u5316\n$ch = curl_init();\n\n\/\/ \u30ed\u30b0\u30a4\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $loginUrl,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_POST =&gt; true,\n    CURLOPT_POSTFIELDS =&gt; $postData,\n    CURLOPT_COOKIEJAR =&gt; $cookieFile,    \/\/ \u30af\u30c3\u30ad\u30fc\u306e\u4fdd\u5b58\u5148\n    CURLOPT_COOKIEFILE =&gt; $cookieFile    \/\/ \u30af\u30c3\u30ad\u30fc\u306e\u8aad\u307f\u8fbc\u307f\u5143\uff08\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\uff09\n]);\n\n\/\/ \u30ed\u30b0\u30a4\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\n$loginResponse = curl_exec($ch);\n\n\/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u7dad\u6301\u3057\u305f\u307e\u307e\u4ed6\u306e\u30da\u30fc\u30b8\u306b\u30a2\u30af\u30bb\u30b9\n$securePageUrl = 'https:\/\/example.com\/secure-area';\ncurl_setopt($ch, CURLOPT_URL, $securePageUrl);\ncurl_setopt($ch, CURLOPT_POST, false);  \/\/ GET\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5909\u66f4\n\n\/\/ \u30bb\u30ad\u30e5\u30a2\u30da\u30fc\u30b8\u3078\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\n$securePageResponse = curl_exec($ch);\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u9589\u3058\u308b\ncurl_close($ch);\n\necho $securePageResponse;\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u4ee5\u4e0b\u306e2\u3064\u306e\u91cd\u8981\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>CURLOPT_COOKIEJAR<\/strong>\uff1a\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u30af\u30c3\u30ad\u30fc\u3092\u4fdd\u5b58\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a<\/li>\n\n\n\n<li><strong>CURLOPT_COOKIEFILE<\/strong>\uff1a\u30ea\u30af\u30a8\u30b9\u30c8\u9001\u4fe1\u6642\u306b\u8aad\u307f\u8fbc\u3080\u30af\u30c3\u30ad\u30fc\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a<\/li>\n<\/ul>\n\n\n\n<p>\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u3092\u4e21\u65b9\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u6307\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u53d7\u4fe1\u3057\u305f\u30af\u30c3\u30ad\u30fc\u3092\u4fdd\u5b58\u3057\u3001\u6b21\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-42\">\u30e1\u30e2\u30ea\u5185\u3067\u306e\u30af\u30c3\u30ad\u30fc\u7ba1\u7406<\/h4>\n\n\n\n<p>\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u308f\u305a\u306b\u30e1\u30e2\u30ea\u5185\u3067\u30af\u30c3\u30ad\u30fc\u3092\u7ba1\u7406\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b<code>curl_setopt()<\/code>\u3068<code>curl_getinfo()<\/code>\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u4f7f\u7528\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; 'https:\/\/example.com\/login',\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_POST =&gt; true,\n    CURLOPT_POSTFIELDS =&gt; 'username=test&amp;password=pass',\n    CURLOPT_HEADER =&gt; true    \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc\u3092\u542b\u3081\u308b\n]);\n\n$response = curl_exec($ch);\n\n\/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u304b\u3089\u30d8\u30c3\u30c0\u30fc\u3068\u30dc\u30c7\u30a3\u3092\u5206\u96e2\n$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);\n$header = substr($response, 0, $headerSize);\n$body = substr($response, $headerSize);\n\n\/\/ \u30d8\u30c3\u30c0\u30fc\u304b\u3089\u30af\u30c3\u30ad\u30fc\u3092\u62bd\u51fa\npreg_match_all('\/^Set-Cookie:\\s*([^;]*)\/mi', $header, $matches);\n$cookies = [];\nforeach ($matches[1] as $item) {\n    parse_str($item, $cookie);\n    $cookies = array_merge($cookies, $cookie);\n}\n\n\/\/ \u62bd\u51fa\u3057\u305f\u30af\u30c3\u30ad\u30fc\u3092\u6b21\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u4f7f\u7528\n$cookieString = '';\nforeach ($cookies as $key =&gt; $value) {\n    $cookieString .= $key . '=' . $value . '; ';\n}\n\n\/\/ \u6b21\u306e\u30ea\u30af\u30a8\u30b9\u30c8\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; 'https:\/\/example.com\/secure-page',\n    CURLOPT_COOKIE =&gt; $cookieString,\n    CURLOPT_POST =&gt; false\n]);\n\n$secureResponse = curl_exec($ch);\ncurl_close($ch);\n\necho $secureResponse;\n?&gt;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-43\">Content-Type\u30d8\u30c3\u30c0\u30fc\u306e\u9069\u5207\u306a\u8a2d\u5b9a<\/h3>\n\n\n\n<p>Content-Type\u30d8\u30c3\u30c0\u30fc\u306f\u3001\u9001\u4fe1\u3059\u308b\u30c7\u30fc\u30bf\u306e\u5f62\u5f0f\u3092\u6307\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u3001\u9069\u5207\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-44\">\u4e3b\u8981\u306aContent-Type\u5024<\/h4>\n\n\n<div id=\"id-9b2ae4c5-407a-47b8-9298-2aa4f4c568dd\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Content-Type<\/th><th>\u8aac\u660e<\/th><th>\u4f7f\u7528\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>application\/x-www-form-urlencoded<\/td><td>HTML\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\uff09<\/td><td>\u30d5\u30a9\u30fc\u30e0\u9001\u4fe1<\/td><\/tr><tr><td>application\/json<\/td><td>JSON\u30c7\u30fc\u30bf<\/td><td>RESTful API<\/td><\/tr><tr><td>multipart\/form-data<\/td><td>\u30d5\u30a1\u30a4\u30eb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u542b\u3080\u30d5\u30a9\u30fc\u30e0<\/td><td>\u30d5\u30a1\u30a4\u30eb\u9001\u4fe1<\/td><\/tr><tr><td>text\/plain<\/td><td>\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8<\/td><td>\u30b7\u30f3\u30d7\u30eb\u306a\u30c6\u30ad\u30b9\u30c8\u30c7\u30fc\u30bf<\/td><\/tr><tr><td>application\/xml<\/td><td>XML\u30c7\u30fc\u30bf<\/td><td>SOAP\u30ea\u30af\u30a8\u30b9\u30c8<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"i-45\">\u30c7\u30fc\u30bf\u5f62\u5f0f\u306b\u5fdc\u3058\u305fContent-Type\u8a2d\u5b9a\u4f8b<\/h4>\n\n\n\n<p><strong>1. JSON\u30c7\u30fc\u30bf\u306e\u9001\u4fe1<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/api.example.com\/data';\n$data = ['name' =&gt; '\u7530\u4e2d', 'age' =&gt; 30];\n$jsonData = json_encode($data, JSON_UNESCAPED_UNICODE);\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_POST =&gt; true,\n    CURLOPT_POSTFIELDS =&gt; $jsonData,\n    CURLOPT_HTTPHEADER =&gt; [\n        'Content-Type: application\/json',\n        'Content-Length: ' . strlen($jsonData)\n    ]\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n\necho $response;\n?&gt;\n<\/pre>\n\n\n\n<p><strong>2. XML\u30c7\u30fc\u30bf\u306e\u9001\u4fe1<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/api.example.com\/soap';\n$xmlData = '&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;request&gt;\n    &lt;name&gt;\u9234\u6728&lt;\/name&gt;\n    &lt;data&gt;\u30c6\u30b9\u30c8\u30c7\u30fc\u30bf&lt;\/data&gt;\n&lt;\/request&gt;';\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_POST =&gt; true,\n    CURLOPT_POSTFIELDS =&gt; $xmlData,\n    CURLOPT_HTTPHEADER =&gt; [\n        'Content-Type: application\/xml',\n        'Content-Length: ' . strlen($xmlData)\n    ]\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n\necho $response;\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-46\">Content-Type\u306e\u8a2d\u5b9a\u306b\u304a\u3051\u308b\u6ce8\u610f\u70b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30c7\u30fc\u30bf\u5f62\u5f0f\u3068\u306e\u4e00\u81f4<\/strong>: \u9001\u4fe1\u3059\u308b\u30c7\u30fc\u30bf\u306e\u5b9f\u969b\u306e\u5f62\u5f0f\u3068<code>Content-Type<\/code>\u30d8\u30c3\u30c0\u30fc\u306e\u5024\u306f\u4e00\u81f4\u3055\u305b\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4e0d\u4e00\u81f4\u304c\u3042\u308b\u3068\u3001\u30b5\u30fc\u30d0\u30fc\u5074\u3067\u6b63\u3057\u304f\u89e3\u6790\u3055\u308c\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306e\u6307\u5b9a<\/strong>: \u7279\u306b\u65e5\u672c\u8a9e\u306a\u3069\u306e\u975eASCII\u6587\u5b57\u3092\u6271\u3046\u5834\u5408\u306f\u3001\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u6307\u5b9a\u3059\u308b\u3068\u826f\u3044\u3067\u3057\u3087\u3046\u3002\u4f8b\uff1a<code>Content-Type: application\/json; charset=UTF-8<\/code><\/li>\n\n\n\n<li><strong>\u30a2\u30af\u30bb\u30d7\u30c8\u30d8\u30c3\u30c0\u30fc\u3068\u306e\u5bfe\u5fdc<\/strong>: \u9001\u4fe1\u3059\u308b<code>Content-Type<\/code>\u3068\u53d7\u3051\u53d6\u308a\u305f\u3044\u30c7\u30fc\u30bf\u5f62\u5f0f\u3092\u6307\u5b9a\u3059\u308b<code>Accept<\/code>\u30d8\u30c3\u30c0\u30fc\u306f\u3001\u4e00\u822c\u7684\u306b\u306f\u540c\u3058\u5024\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$headers = [\n    'Content-Type: application\/json',\n    'Accept: application\/json'\n];\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-47\">\u307e\u3068\u3081<\/h3>\n\n\n\n<p>PHP\u306ecURL\u3092\u4f7f\u7528\u3057\u305fHTTP\u30d8\u30c3\u30c0\u30fc\u3068\u30af\u30c3\u30ad\u30fc\u306e\u64cd\u4f5c\u306f\u3001API\u3084Web\u30b5\u30fc\u30d3\u30b9\u3068\u306e\u9ad8\u5ea6\u306a\u9023\u643a\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306b\u6b20\u304b\u305b\u306a\u3044\u30b9\u30ad\u30eb\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u30ab\u30b9\u30bf\u30e0\u30d8\u30c3\u30c0\u30fc<\/strong>\u306f<code>CURLOPT_HTTPHEADER<\/code>\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u8a2d\u5b9a\u3067\u304d\u3001\u8a8d\u8a3c\u60c5\u5831\u3084\u5e0c\u671b\u3059\u308b\u30ec\u30b9\u30dd\u30f3\u30b9\u5f62\u5f0f\u306a\u3069\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30af\u30c3\u30ad\u30fc<\/strong>\u306f<code>CURLOPT_COOKIE<\/code>\u3001<code>CURLOPT_COOKIEJAR<\/code>\u3001<code>CURLOPT_COOKIEFILE<\/code>\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u7ba1\u7406\u3067\u304d\u3001\u30bb\u30c3\u30b7\u30e7\u30f3\u72b6\u614b\u3092\u7dad\u6301\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>Content-Type<\/strong>\u30d8\u30c3\u30c0\u30fc\u306f\u9001\u4fe1\u3059\u308b\u30c7\u30fc\u30bf\u306e\u5f62\u5f0f\u3092\u6307\u5b9a\u3059\u308b\u305f\u3081\u306b\u91cd\u8981\u3067\u3001\u30c7\u30fc\u30bf\u306e\u5185\u5bb9\u3068\u4e00\u81f4\u3055\u305b\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u8907\u96d1\u306aAPI\u3068\u306e\u9023\u643a\u3084\u3001\u8a8d\u8a3c\u304c\u5fc5\u8981\u306aWeb\u30b5\u30fc\u30d3\u30b9\u3068\u306e\u901a\u4fe1\u3092\u52b9\u7387\u7684\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u6b21\u306e\u7ae0\u3067\u306f\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406\u65b9\u6cd5\u306b\u3064\u3044\u3066\u3055\u3089\u306b\u6df1\u304f\u6398\u308a\u4e0b\u3052\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-48\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af3\uff1a\u5fdc\u7b54\u51e6\u7406\u306e\u9ad8\u5ea6\u306a\u65b9\u6cd5<\/h2>\n\n\n\n<p>API\u3084Web\u30b5\u30fc\u30d3\u30b9\u3068\u306e\u9023\u643a\u306b\u304a\u3044\u3066\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u3001\u8fd4\u3063\u3066\u304d\u305f\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u9069\u5207\u306b\u51e6\u7406\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u306e\u53d6\u5f97\u3068\u5224\u65ad\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc\u306e\u89e3\u6790\u3001\u305d\u3057\u3066\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0\u306e\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-49\">\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u306e\u53d6\u5f97\u3068\u5224\u65ad<\/h3>\n\n\n\n<p>HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u7d50\u679c\u3092\u793a\u30593\u6841\u306e\u6570\u5b57\u3067\u3001\u30b5\u30fc\u30d0\u30fc\u304c\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u51e6\u7406\u7d50\u679c\u3092\u4f1d\u3048\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002PHP\u306ecURL\u3067\u306f\u3001<code>curl_getinfo()<\/code>\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-50\">\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u306e\u57fa\u672c<\/h4>\n\n\n\n<p>HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u306f\u3001\u4e3b\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5206\u985e\u3055\u308c\u307e\u3059\uff1a<\/p>\n\n\n<div id=\"id-5c8e905b-406b-4c61-87aa-142738f8a8ea\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30b3\u30fc\u30c9\u7bc4\u56f2<\/th><th>\u30ab\u30c6\u30b4\u30ea<\/th><th>\u8aac\u660e<\/th><\/tr><\/thead><tbody><tr><td>100-199<\/td><td>\u60c5\u5831<\/td><td>\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u7d99\u7d9a\u4e2d\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3059<\/td><\/tr><tr><td>200-299<\/td><td>\u6210\u529f<\/td><td>\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u6b63\u5e38\u306b\u51e6\u7406\u3055\u308c\u305f\u3053\u3068\u3092\u793a\u3059<\/td><\/tr><tr><td>300-399<\/td><td>\u30ea\u30c0\u30a4\u30ec\u30af\u30c8<\/td><td>\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u5b8c\u4e86\u3059\u308b\u306b\u306f\u8ffd\u52a0\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u304c\u5fc5\u8981<\/td><\/tr><tr><td>400-499<\/td><td>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30a8\u30e9\u30fc<\/td><td>\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u554f\u984c\u304c\u3042\u308b\u3053\u3068\u3092\u793a\u3059<\/td><\/tr><tr><td>500-599<\/td><td>\u30b5\u30fc\u30d0\u30fc\u30a8\u30e9\u30fc<\/td><td>\u30b5\u30fc\u30d0\u30fc\u5074\u3067\u554f\u984c\u304c\u767a\u751f\u3057\u305f\u3053\u3068\u3092\u793a\u3059<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"i-51\">\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u306e\u53d6\u5f97\u3068\u5224\u65ad<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/api.example.com\/data';\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true\n]);\n\n\/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\n$response = curl_exec($ch);\n\n\/\/ \u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u306e\u53d6\u5f97\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n\n\/\/ \u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u306b\u57fa\u3065\u3044\u305f\u51e6\u7406\nswitch (true) {\n    case $httpCode &gt;= 200 &amp;&amp; $httpCode &lt; 300:\n        echo \"\u6210\u529f: \";\n        \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u30c7\u30fc\u30bf\u306e\u51e6\u7406\n        $data = json_decode($response, true);\n        print_r($data);\n        break;\n        \n    case $httpCode &gt;= 300 &amp;&amp; $httpCode &lt; 400:\n        echo \"\u30ea\u30c0\u30a4\u30ec\u30af\u30c8: HTTP {$httpCode}\\n\";\n        \/\/ \u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u60c5\u5831\u306e\u53d6\u5f97\n        $redirectUrl = curl_getinfo($ch, CURLINFO_REDIRECT_URL);\n        echo \"\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u5148: {$redirectUrl}\\n\";\n        break;\n        \n    case $httpCode &gt;= 400 &amp;&amp; $httpCode &lt; 500:\n        echo \"\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30a8\u30e9\u30fc: HTTP {$httpCode}\\n\";\n        echo \"\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8: {$response}\\n\";\n        \/\/ \u7279\u5b9a\u306e\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\u306b\u5bfe\u3059\u308b\u51e6\u7406\n        if ($httpCode == 401) {\n            echo \"\u8a8d\u8a3c\u304c\u5fc5\u8981\u3067\u3059\u3002\\n\";\n        } elseif ($httpCode == 404) {\n            echo \"\u30ea\u30bd\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\\n\";\n        }\n        break;\n        \n    case $httpCode &gt;= 500:\n        echo \"\u30b5\u30fc\u30d0\u30fc\u30a8\u30e9\u30fc: HTTP {$httpCode}\\n\";\n        echo \"\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8: {$response}\\n\";\n        \/\/ \u30b5\u30fc\u30d0\u30fc\u30a8\u30e9\u30fc\u306e\u8a18\u9332\n        error_log(\"API\u30b5\u30fc\u30d0\u30fc\u30a8\u30e9\u30fc: {$httpCode} - {$response}\");\n        break;\n        \n    default:\n        echo \"\u672a\u77e5\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9: {$httpCode}\\n\";\n}\n\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u306e\u7bc4\u56f2\u306b\u57fa\u3065\u3044\u3066\u7570\u306a\u308b\u51e6\u7406\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002\u7279\u306b\u91cd\u8981\u306a\u306e\u306f\u3001\u30a8\u30e9\u30fc\u6642\u306e\u9069\u5207\u306a\u51e6\u7406\u3068\u3001\u6210\u529f\u6642\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u30c7\u30fc\u30bf\u306e\u89e3\u6790\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-52\">\u305d\u306e\u4ed6\u306e\u91cd\u8981\u306a\u60c5\u5831\u306e\u53d6\u5f97<\/h4>\n\n\n\n<p><code>curl_getinfo()<\/code>\u306f\u3001\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u4ee5\u5916\u306b\u3082\u591a\u304f\u306e\u6709\u7528\u306a\u60c5\u5831\u3092\u63d0\u4f9b\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\u5f8c\n$info = curl_getinfo($ch);\n\n\/\/ \u4e3b\u8981\u306a\u60c5\u5831\u3092\u8868\u793a\necho \"\u7dcf\u6240\u8981\u6642\u9593: \" . $info['total_time'] . \" \u79d2\\n\";\necho \"\u63a5\u7d9a\u306b\u304b\u304b\u3063\u305f\u6642\u9593: \" . $info['connect_time'] . \" \u79d2\\n\";\necho \"\u30cd\u30fc\u30e0\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u6642\u9593: \" . $info['namelookup_time'] . \" \u79d2\\n\";\necho \"\u9001\u4fe1\u3057\u305f\u30d0\u30a4\u30c8\u6570: \" . $info['request_size'] . \" \u30d0\u30a4\u30c8\\n\";\necho \"\u53d7\u4fe1\u3057\u305f\u30d0\u30a4\u30c8\u6570: \" . $info['size_download'] . \" \u30d0\u30a4\u30c8\\n\";\necho \"\u5e73\u5747\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u901f\u5ea6: \" . $info['speed_download'] . \" bytes\/sec\\n\";\necho \"\u30b3\u30f3\u30c6\u30f3\u30c4\u30bf\u30a4\u30d7: \" . $info['content_type'] . \"\\n\";\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u60c5\u5831\u306f\u3001API\u9023\u643a\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5206\u6790\u3057\u305f\u308a\u3001\u554f\u984c\u3092\u8a3a\u65ad\u3057\u305f\u308a\u3059\u308b\u969b\u306b\u975e\u5e38\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-53\">\u30ec\u30b9\u30dd\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc\u306e\u53d6\u5f97\u3068\u89e3\u6790<\/h3>\n\n\n\n<p>API\u3068\u306e\u9023\u643a\u3067\u306f\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u30dc\u30c7\u30a3\u3060\u3051\u3067\u306a\u304f\u3001\u30d8\u30c3\u30c0\u30fc\u60c5\u5831\u3082\u91cd\u8981\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30ec\u30fc\u30c8\u5236\u9650\u60c5\u5831\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u5236\u5fa1\u6307\u793a\u3001\u30ab\u30b9\u30bf\u30e0\u30d8\u30c3\u30c0\u30fc\u306a\u3069\u304c\u30d8\u30c3\u30c0\u30fc\u306b\u542b\u307e\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-54\">\u30ec\u30b9\u30dd\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc\u306e\u53d6\u5f97<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/api.example.com\/data';\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_HEADER =&gt; true  \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc\u3092\u542b\u3081\u308b\n]);\n\n\/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\n$response = curl_exec($ch);\n\n\/\/ \u30d8\u30c3\u30c0\u30fc\u3068\u30dc\u30c7\u30a3\u3092\u5206\u96e2\n$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);\n$header = substr($response, 0, $headerSize);\n$body = substr($response, $headerSize);\n\ncurl_close($ch);\n\n\/\/ \u30d8\u30c3\u30c0\u30fc\u3092\u884c\u3054\u3068\u306b\u5206\u5272\n$headerLines = explode(\"\\r\\n\", $header);\n\n\/\/ \u30d8\u30c3\u30c0\u30fc\u60c5\u5831\u3092\u8868\u793a\nforeach ($headerLines as $line) {\n    if (!empty(trim($line))) {\n        echo $line . \"\\n\";\n    }\n}\n\n\/\/ \u30dc\u30c7\u30a3\u306e\u51e6\u7406\n$data = json_decode($body, true);\nprint_r($data);\n?&gt;\n<\/pre>\n\n\n\n<p><code>CURLOPT_HEADER<\/code>\u30aa\u30d7\u30b7\u30e7\u30f3\u3092<code>true<\/code>\u306b\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u306b\u30d8\u30c3\u30c0\u30fc\u60c5\u5831\u304c\u542b\u307e\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u305d\u3057\u3066\u3001<code>CURLINFO_HEADER_SIZE<\/code>\u3067\u53d6\u5f97\u3057\u305f\u30d8\u30c3\u30c0\u30fc\u30b5\u30a4\u30ba\u3092\u4f7f\u3063\u3066\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u6587\u5b57\u5217\u304b\u3089\u30d8\u30c3\u30c0\u30fc\u3068\u30dc\u30c7\u30a3\u3092\u5206\u96e2\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-55\">\u7279\u5b9a\u306e\u30d8\u30c3\u30c0\u30fc\u5024\u3092\u62bd\u51fa<\/h4>\n\n\n\n<p>\u7279\u5b9a\u306e\u30d8\u30c3\u30c0\u30fc\u5024\u3060\u3051\u3092\u62bd\u51fa\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u6b63\u898f\u8868\u73fe\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u7279\u5b9a\u306e\u30d8\u30c3\u30c0\u30fc\u3092\u62bd\u51fa\nfunction extractHeader($header, $name) {\n    $pattern = \"\/^{$name}:(.*)$\/mi\";\n    if (preg_match($pattern, $header, $matches)) {\n        return trim($matches[1]);\n    }\n    return null;\n}\n\n\/\/ \u4f8b: Content-Type\u30d8\u30c3\u30c0\u30fc\u3092\u53d6\u5f97\n$contentType = extractHeader($header, 'Content-Type');\necho \"Content-Type: {$contentType}\\n\";\n\n\/\/ \u4f8b: \u30ec\u30fc\u30c8\u5236\u9650\u60c5\u5831\u3092\u53d6\u5f97\n$rateLimit = extractHeader($header, 'X-RateLimit-Limit');\n$rateRemaining = extractHeader($header, 'X-RateLimit-Remaining');\n$rateReset = extractHeader($header, 'X-RateLimit-Reset');\n\nif ($rateLimit &amp;&amp; $rateRemaining) {\n    echo \"API\u5236\u9650: {$rateRemaining}\/{$rateLimit}\\n\";\n    if ($rateReset) {\n        $resetTime = date('Y-m-d H:i:s', (int)$rateReset);\n        echo \"\u30ea\u30bb\u30c3\u30c8\u6642\u9593: {$resetTime}\\n\";\n    }\n}\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u65b9\u6cd5\u3092\u4f7f\u3048\u3070\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc\u304b\u3089\u5fc5\u8981\u306a\u60c5\u5831\u3060\u3051\u3092\u7c21\u5358\u306b\u62bd\u51fa\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-56\">\u30d8\u30c3\u30c0\u30fc\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u306e\u4f7f\u7528<\/h4>\n\n\n\n<p>\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u5834\u5408\u306a\u3069\u3001\u5168\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u30e1\u30e2\u30ea\u306b\u4fdd\u6301\u3057\u305f\u304f\u306a\u3044\u5834\u5408\u306f\u3001\u30d8\u30c3\u30c0\u30fc\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u3082\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/api.example.com\/large-data';\n\n\/\/ \u30d8\u30c3\u30c0\u30fc\u60c5\u5831\u3092\u683c\u7d0d\u3059\u308b\u914d\u5217\n$responseHeaders = [];\n\n\/\/ \u30d8\u30c3\u30c0\u30fc\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\nfunction headerCallback($ch, $headerLine) {\n    global $responseHeaders;\n    \n    \/\/ \u7a7a\u884c\u306f\u7121\u8996\n    if (trim($headerLine) === '') {\n        return strlen($headerLine);\n    }\n    \n    \/\/ HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u884c\u306f\u305d\u306e\u307e\u307e\u683c\u7d0d\n    if (strpos($headerLine, 'HTTP\/') === 0) {\n        $responseHeaders[] = trim($headerLine);\n    } else {\n        \/\/ \u300c\u540d\u524d: \u5024\u300d\u306e\u5f62\u5f0f\u306e\u30d8\u30c3\u30c0\u30fc\u3092\u89e3\u6790\n        list($name, $value) = explode(':', $headerLine, 2);\n        if ($name &amp;&amp; $value) {\n            $responseHeaders[$name] = trim($value);\n        }\n    }\n    \n    \/\/ \u30d8\u30c3\u30c0\u30fc\u884c\u306e\u9577\u3055\u3092\u8fd4\u3059\uff08\u3053\u308c\u304c\u5fc5\u8981\uff09\n    return strlen($headerLine);\n}\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_HEADERFUNCTION =&gt; 'headerCallback'\n]);\n\n$body = curl_exec($ch);\ncurl_close($ch);\n\n\/\/ \u53ce\u96c6\u3057\u305f\u30d8\u30c3\u30c0\u30fc\u60c5\u5831\u306e\u8868\u793a\nprint_r($responseHeaders);\n\n\/\/ \u30dc\u30c7\u30a3\u306e\u51e6\u7406\n\/\/ ...\n?&gt;\n<\/pre>\n\n\n\n<p><code>CURLOPT_HEADERFUNCTION<\/code>\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u5404\u30d8\u30c3\u30c0\u30fc\u884c\u304c\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u306b\u6e21\u3055\u308c\u308b\u305f\u3081\u3001\u30e1\u30e2\u30ea\u52b9\u7387\u3088\u304f\u30d8\u30c3\u30c0\u30fc\u3092\u51e6\u7406\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-57\">\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0\u6280\u8853<\/h3>\n\n\n\n<p>cURL\u3092\u4f7f\u7528\u3057\u305fAPI\u9023\u643a\u3067\u306f\u3001\u69d8\u3005\u306a\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u52b9\u679c\u7684\u306a\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0\u6280\u8853\u3092\u8eab\u306b\u3064\u3051\u308b\u3053\u3068\u3067\u3001\u554f\u984c\u306e\u65e9\u671f\u767a\u898b\u3068\u89e3\u6c7a\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-58\">\u57fa\u672c\u7684\u306a\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/api.example.com\/data';\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_CONNECTTIMEOUT =&gt; 5,    \/\/ \u63a5\u7d9a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\uff08\u79d2\uff09\n    CURLOPT_TIMEOUT =&gt; 10           \/\/ \u5b9f\u884c\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\uff08\u79d2\uff09\n]);\n\n$response = curl_exec($ch);\n\n\/\/ \u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30af\nif ($response === false) {\n    $errorNumber = curl_errno($ch);\n    $errorMessage = curl_error($ch);\n    \n    \/\/ \u30a8\u30e9\u30fc\u60c5\u5831\u306e\u8868\u793a\n    echo \"cURL\u30a8\u30e9\u30fc ({$errorNumber}): {$errorMessage}\\n\";\n    \n    \/\/ \u30a8\u30e9\u30fc\u7a2e\u5225\u306b\u5fdc\u3058\u305f\u51e6\u7406\n    switch ($errorNumber) {\n        case CURLE_OPERATION_TIMEDOUT:\n            echo \"\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u30b5\u30fc\u30d0\u30fc\u304c\u5fdc\u7b54\u3057\u3066\u3044\u306a\u3044\u304b\u3001\u63a5\u7d9a\u304c\u9045\u3059\u304e\u307e\u3059\u3002\\n\";\n            break;\n            \n        case CURLE_COULDNT_CONNECT:\n            echo \"\u30b5\u30fc\u30d0\u30fc\u3078\u306e\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u30db\u30b9\u30c8\u540d\u3084\u30dd\u30fc\u30c8\u756a\u53f7\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\\n\";\n            break;\n            \n        case CURLE_COULDNT_RESOLVE_HOST:\n            echo \"\u30db\u30b9\u30c8\u540d\u306e\u89e3\u6c7a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002URL\u304c\u6b63\u3057\u3044\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\\n\";\n            break;\n            \n        case CURLE_SSL_CONNECT_ERROR:\n            echo \"SSL\/TLS\u63a5\u7d9a\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3059\u3002\u8a3c\u660e\u66f8\u304c\u6709\u52b9\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\\n\";\n            break;\n            \n        default:\n            echo \"\u60f3\u5b9a\u5916\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u8a73\u7d30\u306f\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\\n\";\n            \/\/ \u30a8\u30e9\u30fc\u3092\u30ed\u30b0\u306b\u8a18\u9332\n            error_log(\"cURL\u30a8\u30e9\u30fc {$errorNumber}: {$errorMessage} - URL: {$url}\");\n    }\n    \n    \/\/ \u51e6\u7406\u306e\u4e2d\u65ad\u3084\u4ee3\u66ff\u51e6\u7406\n    \/\/ ...\n} else {\n    \/\/ \u6b63\u5e38\u306a\u51e6\u7406\n    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n    echo \"HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9: {$httpCode}\\n\";\n    \n    \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406\n    \/\/ ...\n}\n\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<p><code>curl_errno()<\/code>\u95a2\u6570\u306f\u30a8\u30e9\u30fc\u756a\u53f7\u3092\u3001<code>curl_error()<\/code>\u95a2\u6570\u306f\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8fd4\u3057\u307e\u3059\u3002\u30a8\u30e9\u30fc\u756a\u53f7\u306b\u57fa\u3065\u3044\u3066\u9069\u5207\u306a\u5bfe\u5fdc\u3092\u53d6\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u5177\u4f53\u7684\u306a\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u30e6\u30fc\u30b6\u30fc\u306b\u63d0\u4f9b\u3057\u305f\u308a\u3001\u81ea\u52d5\u7684\u306a\u518d\u8a66\u884c\u306a\u3069\u306e\u5bfe\u7b56\u3092\u8b1b\u3058\u305f\u308a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-59\">\u8a73\u7d30\u306a\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u306e\u53d6\u5f97<\/h4>\n\n\n\n<p>\u554f\u984c\u3092\u8a3a\u65ad\u3059\u308b\u305f\u3081\u306b\u3001\u3088\u308a\u8a73\u7d30\u306a\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001<code>CURLOPT_VERBOSE<\/code>\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/api.example.com\/data';\n\n\/\/ \u30c7\u30d0\u30c3\u30b0\u51fa\u529b\u3092\u4fdd\u5b58\u3059\u308b\u30d5\u30a1\u30a4\u30eb\n$debugFile = fopen('curl_debug.log', 'w');\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_VERBOSE =&gt; true,           \/\/ \u8a73\u7d30\u306a\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3092\u51fa\u529b\n    CURLOPT_STDERR =&gt; $debugFile       \/\/ \u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u306e\u51fa\u529b\u5148\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n\n\/\/ \u30c7\u30d0\u30c3\u30b0\u30d5\u30a1\u30a4\u30eb\u3092\u9589\u3058\u308b\nfclose($debugFile);\n\n\/\/ \u30c7\u30d0\u30c3\u30b0\u30ed\u30b0\u306e\u5185\u5bb9\u3092\u78ba\u8a8d\necho \"\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u306fcurl_debug.log\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f\u3002\\n\";\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3057\u3066\u53d6\u5f97\u3057\u305f\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u306b\u306f\u3001DNS\u89e3\u6c7a\u3001\u63a5\u7d9a\u78ba\u7acb\u3001SSL\u30cf\u30f3\u30c9\u30b7\u30a7\u30a4\u30af\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u30d8\u30c3\u30c0\u30fc\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc\u306a\u3069\u306e\u8a73\u7d30\u306a\u60c5\u5831\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u7279\u306b\u63a5\u7d9a\u306e\u554f\u984c\u3084\u8a8d\u8a3c\u306e\u554f\u984c\u3092\u8a3a\u65ad\u3059\u308b\u969b\u306b\u975e\u5e38\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-60\">\u30c7\u30d0\u30c3\u30b0\u306b\u5f79\u7acb\u3064\u305d\u306e\u4ed6\u306e\u30aa\u30d7\u30b7\u30e7\u30f3<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    \n    \/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u3068\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u4e21\u65b9\u306e\u30d8\u30c3\u30c0\u30fc\u3092\u53d6\u5f97\n    CURLOPT_HEADER =&gt; true,\n    \n    \/\/ \u3088\u308a\u8a73\u7d30\u306a\u30bf\u30a4\u30df\u30f3\u30b0\u60c5\u5831\u3092\u53d6\u5f97\n    CURLOPT_CERTINFO =&gt; true,\n    \n    \/\/ \u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3092\u81ea\u52d5\u7684\u306b\u8ffd\u8de1\u3057\u306a\u3044\uff08\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\uff09\n    CURLOPT_FOLLOWLOCATION =&gt; false,\n    \n    \/\/ SSL\u30a8\u30e9\u30fc\u306e\u8a73\u7d30\u60c5\u5831\u3092\u53d6\u5f97\n    CURLOPT_SSL_VERIFYPEER =&gt; true,\n    CURLOPT_SSL_VERIFYHOST =&gt; 2,\n    CURLOPT_CERTINFO =&gt; true\n]);\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-61\">\u5b9f\u8df5\u7684\u306a\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3068\u518d\u8a66\u884c\u30ed\u30b8\u30c3\u30af<\/h4>\n\n\n\n<p>\u5b9f\u969b\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u4e00\u6642\u7684\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u554f\u984c\u306b\u5bfe\u5fdc\u3059\u308b\u305f\u3081\u3001\u518d\u8a66\u884c\u30ed\u30b8\u30c3\u30af\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction makeApiRequest($url, $options = [], $maxRetries = 3, $retryDelay = 1) {\n    $ch = curl_init();\n    $defaultOptions = [\n        CURLOPT_URL =&gt; $url,\n        CURLOPT_RETURNTRANSFER =&gt; true,\n        CURLOPT_TIMEOUT =&gt; 30,\n        CURLOPT_CONNECTTIMEOUT =&gt; 5\n    ];\n    \n    \/\/ \u30c7\u30d5\u30a9\u30eb\u30c8\u30aa\u30d7\u30b7\u30e7\u30f3\u3068\u6307\u5b9a\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u30de\u30fc\u30b8\n    curl_setopt_array($ch, $defaultOptions + $options);\n    \n    $retryCount = 0;\n    $success = false;\n    $response = null;\n    $error = null;\n    \n    \/\/ \u6700\u5927\u8a66\u884c\u56de\u6570\u307e\u3067\u518d\u8a66\u884c\n    while (!$success &amp;&amp; $retryCount &lt;= $maxRetries) {\n        if ($retryCount &gt; 0) {\n            \/\/ \u518d\u8a66\u884c\u524d\u306b\u5f85\u6a5f\uff08\u6307\u6570\u30d0\u30c3\u30af\u30aa\u30d5\uff09\n            $waitTime = $retryDelay * pow(2, $retryCount - 1);\n            echo \"\u518d\u8a66\u884c\u3092 {$waitTime} \u79d2\u5f8c\u306b\u5b9f\u884c\u3057\u307e\u3059...\\n\";\n            sleep($waitTime);\n        }\n        \n        $response = curl_exec($ch);\n        \n        if ($response !== false) {\n            $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n            \n            \/\/ \u6210\u529f\u307e\u305f\u306f\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30a8\u30e9\u30fc\uff08\u518d\u8a66\u884c\u3057\u306a\u3044\uff09\n            if ($httpCode &lt; 500) {\n                $success = true;\n            } else {\n                \/\/ \u30b5\u30fc\u30d0\u30fc\u30a8\u30e9\u30fc\uff08\u518d\u8a66\u884c\u3059\u308b\u53ef\u80fd\u6027\u3042\u308a\uff09\n                $error = \"HTTP\u30a8\u30e9\u30fc: {$httpCode}\";\n                $retryCount++;\n            }\n        } else {\n            \/\/ cURL\u30a8\u30e9\u30fc\n            $errno = curl_errno($ch);\n            $error = curl_error($ch);\n            \n            \/\/ \u4e00\u6642\u7684\u306a\u30a8\u30e9\u30fc\u306e\u307f\u518d\u8a66\u884c\n            $temporaryErrors = [\n                CURLE_OPERATION_TIMEDOUT,\n                CURLE_COULDNT_CONNECT,\n                CURLE_GOT_NOTHING\n            ];\n            \n            if (in_array($errno, $temporaryErrors)) {\n                $retryCount++;\n            } else {\n                \/\/ \u6c38\u7d9a\u7684\u306a\u30a8\u30e9\u30fc\u306f\u518d\u8a66\u884c\u3057\u306a\u3044\n                break;\n            }\n        }\n    }\n    \n    curl_close($ch);\n    \n    return [\n        'success' =&gt; $success,\n        'response' =&gt; $response,\n        'error' =&gt; $error,\n        'retries' =&gt; $retryCount\n    ];\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$result = makeApiRequest('https:\/\/api.example.com\/data');\nif ($result['success']) {\n    echo \"\u6210\u529f! \u30ec\u30b9\u30dd\u30f3\u30b9: \" . $result['response'] . \"\\n\";\n} else {\n    echo \"\u30a8\u30e9\u30fc: \" . $result['error'] . \"\\n\";\n    echo \"\u8a66\u884c\u56de\u6570: \" . ($result['retries'] + 1) . \"\\n\";\n}\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u95a2\u6570\u306f\u3001\u4e00\u6642\u7684\u306a\u30a8\u30e9\u30fc\u3084500\u7cfb\u306e\u30b5\u30fc\u30d0\u30fc\u30a8\u30e9\u30fc\u306b\u5bfe\u3057\u3066\u3001\u6307\u6570\u30d0\u30c3\u30af\u30aa\u30d5\u3092\u4f7f\u3063\u305f\u518d\u8a66\u884c\u30ed\u30b8\u30c3\u30af\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u4e00\u6642\u7684\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u554f\u984c\u3084\u30b5\u30fc\u30d0\u30fc\u8ca0\u8377\u306e\u554f\u984c\u306b\u5bfe\u3057\u3066\u3001\u3088\u308a\u5805\u7262\u306aAPI\u9023\u643a\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-62\">\u307e\u3068\u3081<\/h3>\n\n\n\n<p>PHP\u306ecURL\u3092\u4f7f\u7528\u3057\u305f\u30ec\u30b9\u30dd\u30f3\u30b9\u51e6\u7406\u3068\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u306e\u9069\u5207\u306a\u5b9f\u88c5\u306f\u3001\u5805\u7262\u306aAPI\u9023\u643a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u69cb\u7bc9\u306b\u4e0d\u53ef\u6b20\u3067\u3059\u3002\u3053\u306e\u7ae0\u3067\u5b66\u3093\u3060\u30c6\u30af\u30cb\u30c3\u30af\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5229\u70b9\u304c\u5f97\u3089\u308c\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30a8\u30e9\u30fc\u306b\u5bfe\u3059\u308b\u9069\u5207\u306a\u5bfe\u5fdc<\/strong>\uff1a\u30a8\u30e9\u30fc\u306e\u7a2e\u985e\u306b\u5fdc\u3058\u305f\u51e6\u7406\u304c\u3067\u304d\u3001\u30e6\u30fc\u30b6\u30fc\u306b\u9069\u5207\u306a\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u63d0\u4f9b\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u554f\u984c\u306e\u52b9\u7387\u7684\u306a\u8a3a\u65ad<\/strong>\uff1a\u8a73\u7d30\u306a\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3092\u53d6\u5f97\u3057\u3066\u554f\u984c\u306e\u539f\u56e0\u3092\u7279\u5b9a\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u3088\u308a\u5805\u7262\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3<\/strong>\uff1a\u518d\u8a66\u884c\u30ed\u30b8\u30c3\u30af\u3084\u9069\u5207\u306a\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u306b\u3088\u308a\u3001\u4e00\u6642\u7684\u306a\u554f\u984c\u306b\u5f37\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30ec\u30b9\u30dd\u30f3\u30b9\u304b\u3089\u306e\u6709\u7528\u306a\u60c5\u5831\u62bd\u51fa<\/strong>\uff1a\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u3084\u30d8\u30c3\u30c0\u30fc\u60c5\u5831\u3092\u9069\u5207\u306b\u51e6\u7406\u3057\u3066\u3001API\u304b\u3089\u306e\u60c5\u5831\u3092\u6700\u5927\u9650\u306b\u6d3b\u7528\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u6b21\u306e\u7ae0\u3067\u306f\u3001cURL\u3092\u4f7f\u7528\u3057\u305f\u8a8d\u8a3c\u51e6\u7406\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-63\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af4\uff1acURL\u3067\u306e\u8a8d\u8a3c\u51e6\u7406<\/h2>\n\n\n\n<p>\u591a\u304f\u306eAPI\u3084Web\u30b5\u30fc\u30d3\u30b9\u306f\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4e0a\u306e\u7406\u7531\u304b\u3089\u4f55\u3089\u304b\u306e\u8a8d\u8a3c\u3092\u5fc5\u8981\u3068\u3057\u307e\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001PHP\u306ecURL\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3067\u304d\u308b\u4e3b\u8981\u306a\u8a8d\u8a3c\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3059\u3002\u5177\u4f53\u7684\u306b\u306f\u3001\u57fa\u672c\u8a8d\u8a3c\u3001OAuth\u8a8d\u8a3c\u3001API\u30ad\u30fc\u3092\u4f7f\u7528\u3057\u305f\u8a8d\u8a3c\u306e3\u3064\u306e\u65b9\u6cd5\u306b\u7126\u70b9\u3092\u5f53\u3066\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-64\">\u57fa\u672c\u8a8d\u8a3c\u306e\u5b9f\u88c5\u65b9\u6cd5<\/h3>\n\n\n\n<p>HTTP\u57fa\u672c\u8a8d\u8a3c\uff08Basic Authentication\uff09\u306f\u3001\u6700\u3082\u30b7\u30f3\u30d7\u30eb\u306a\u8a8d\u8a3c\u65b9\u5f0f\u306e\u4e00\u3064\u3067\u3001\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066API\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002PHP\u306ecURL\u3067\u306f\u3001\u3053\u306e\u8a8d\u8a3c\u65b9\u5f0f\u3092\u7c21\u5358\u306b\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-65\">cURL\u306e\u57fa\u672c\u8a8d\u8a3c\u30aa\u30d7\u30b7\u30e7\u30f3<\/h4>\n\n\n\n<p>\u57fa\u672c\u8a8d\u8a3c\u306b\u306f\u3001\u4e3b\u306b2\u3064\u306e\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>CURLOPT_USERPWD\u30aa\u30d7\u30b7\u30e7\u30f3<\/strong>\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5<\/li>\n\n\n\n<li><strong>Authorization<\/strong> \u30d8\u30c3\u30c0\u30fc\u3092\u624b\u52d5\u3067\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-66\">1. CURLOPT_USERPWD\u3092\u4f7f\u7528\u3057\u305f\u5b9f\u88c5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ API\u306eURL\n$url = 'https:\/\/api.example.com\/protected-resource';\n\n\/\/ \u8a8d\u8a3c\u60c5\u5831\n$username = 'api_user';\n$password = 'api_password';\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u521d\u671f\u5316\n$ch = curl_init();\n\n\/\/ cURL\u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_USERPWD =&gt; \"$username:$password\"  \/\/ \u57fa\u672c\u8a8d\u8a3c\u306e\u8a8d\u8a3c\u60c5\u5831\n]);\n\n\/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\n$response = curl_exec($ch);\n\n\/\/ \u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30af\nif (curl_errno($ch)) {\n    echo '\u8a8d\u8a3c\u30a8\u30e9\u30fc: ' . curl_error($ch);\n} else {\n    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n    \n    if ($httpCode == 401) {\n        echo \"\u8a8d\u8a3c\u5931\u6557: \u8a8d\u8a3c\u60c5\u5831\u304c\u7121\u52b9\u3067\u3059\u3002\\n\";\n    } elseif ($httpCode == 403) {\n        echo \"\u30a2\u30af\u30bb\u30b9\u62d2\u5426: \u8a8d\u8a3c\u3055\u308c\u307e\u3057\u305f\u304c\u3001\u30ea\u30bd\u30fc\u30b9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u304c\u3042\u308a\u307e\u305b\u3093\u3002\\n\";\n    } elseif ($httpCode &gt;= 200 &amp;&amp; $httpCode &lt; 300) {\n        echo \"\u8a8d\u8a3c\u6210\u529f\uff01\\n\";\n        \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406\n        $data = json_decode($response, true);\n        print_r($data);\n    } else {\n        echo \"HTTP\u30a8\u30e9\u30fc: $httpCode\\n\";\n    }\n}\n\n\/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u9589\u3058\u308b\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<p><code>CURLOPT_USERPWD<\/code>\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u300c\u30e6\u30fc\u30b6\u30fc\u540d:\u30d1\u30b9\u30ef\u30fc\u30c9\u300d\u306e\u5f62\u5f0f\u3067\u8a8d\u8a3c\u60c5\u5831\u3092\u6307\u5b9a\u3059\u308b\u3068\u3001cURL\u304c\u81ea\u52d5\u7684\u306b\u9069\u5207\u306a<code>Authorization: Basic xxx<\/code>\u30d8\u30c3\u30c0\u30fc\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-67\">2. Authorization\u30d8\u30c3\u30c0\u30fc\u3092\u624b\u52d5\u3067\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/api.example.com\/protected-resource';\n$username = 'api_user';\n$password = 'api_password';\n\n\/\/ Base64\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u305f\u8a8d\u8a3c\u6587\u5b57\u5217\u306e\u4f5c\u6210\n$credentials = base64_encode(\"$username:$password\");\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_HTTPHEADER =&gt; [\n        \"Authorization: Basic $credentials\"  \/\/ \u624b\u52d5\u3067\u57fa\u672c\u8a8d\u8a3c\u30d8\u30c3\u30c0\u30fc\u3092\u8a2d\u5b9a\n    ]\n]);\n\n$response = curl_exec($ch);\n\/\/ \u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30af\u3068\u7d50\u679c\u51e6\u7406\n\/\/ ...\n\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u65b9\u6cd5\u3067\u306f\u3001\u8a8d\u8a3c\u60c5\u5831\u3092\u81ea\u5206\u3067Base64\u30a8\u30f3\u30b3\u30fc\u30c9\u3057\u3001<code>Authorization<\/code>\u30d8\u30c3\u30c0\u30fc\u3092\u624b\u52d5\u3067\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u306e\u65b9\u6cd5\u306f\u3001\u3088\u308a\u67d4\u8edf\u306a\u8a8d\u8a3c\u51e6\u7406\u304c\u5fc5\u8981\u306a\u5834\u5408\u3084\u3001\u8907\u96d1\u306a\u30d8\u30c3\u30c0\u30fc\u69cb\u9020\u3092\u6301\u3064API\u3067\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-68\">\u57fa\u672c\u8a8d\u8a3c\u306e\u6ce8\u610f\u70b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ea\u30b9\u30af<\/strong>\uff1a\u57fa\u672c\u8a8d\u8a3c\u306f\u30b7\u30f3\u30d7\u30eb\u3067\u3059\u304c\u3001\u8a8d\u8a3c\u60c5\u5831\u304c\u7c21\u5358\u306b\u30c7\u30b3\u30fc\u30c9\u3067\u304d\u308bBase64\u3067\u9001\u4fe1\u3055\u308c\u308b\u305f\u3081\u3001\u5fc5\u305aHTTPS\uff08SSL\/TLS\uff09\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/li>\n\n\n\n<li><strong>\u8a8d\u8a3c\u60c5\u5831\u306e\u4fdd\u8b77<\/strong>\uff1a\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u5185\u306b\u76f4\u63a5\u8a8d\u8a3c\u60c5\u5831\u3092\u8a18\u8ff0\u305b\u305a\u3001\u74b0\u5883\u5909\u6570\u3084\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8aad\u307f\u8fbc\u3080\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li><strong>\u8a8d\u8a3c\u5931\u6557\u306e\u51e6\u7406<\/strong>\uff1a401\uff08Unauthorized\uff09\u3084403\uff08Forbidden\uff09\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u3092\u9069\u5207\u306b\u51e6\u7406\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-69\">OAuth\u8a8d\u8a3c\u3068\u306e\u9023\u643a\u65b9\u6cd5<\/h3>\n\n\n\n<p>OAuth\uff08\u7279\u306bOAuth 2.0\uff09\u306f\u3001\u73fe\u4ee3\u306eAPI\u3067\u6700\u3082\u5e83\u304f\u4f7f\u308f\u308c\u3066\u3044\u308b\u8a8d\u8a3c\u30d7\u30ed\u30c8\u30b3\u30eb\u306e\u4e00\u3064\u3067\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u306b\u4ee3\u308f\u3063\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304cAPI\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306e\u5b89\u5168\u306a\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-70\">OAuth 2.0\u306e\u57fa\u672c\u7684\u306a\u30d5\u30ed\u30fc<\/h4>\n\n\n\n<p>OAuth 2.0\u306b\u306f\u8907\u6570\u306e\u8a8d\u8a3c\u30d5\u30ed\u30fc\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u3053\u3053\u3067\u306f\u6700\u3082\u4e00\u822c\u7684\u306a\u300c\u8a8d\u53ef\u30b3\u30fc\u30c9\u30d5\u30ed\u30fc\u300d\u3092\u4f8b\u306b\u8aac\u660e\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e6\u30fc\u30b6\u30fc\u3092OAuth\u8a8d\u8a3c\u30b5\u30fc\u30d0\u30fc\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8<\/li>\n\n\n\n<li>\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6a29\u9650\u8981\u6c42\u3092\u627f\u8a8d<\/li>\n\n\n\n<li>\u8a8d\u8a3c\u30b5\u30fc\u30d0\u30fc\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u8a8d\u53ef\u30b3\u30fc\u30c9\u3092\u8fd4\u3059<\/li>\n\n\n\n<li>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u8a8d\u53ef\u30b3\u30fc\u30c9\u3068\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u4f7f\u3063\u3066\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97<\/li>\n\n\n\n<li>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u3063\u3066API\u306b\u30a2\u30af\u30bb\u30b9<\/li>\n<\/ol>\n\n\n\n<p>PHP\u306ecURL\u3092\u4f7f\u7528\u3057\u3066\u3001\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u306e\u4e3b\u8981\u90e8\u5206\u3092\u5b9f\u88c5\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-71\">\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u306e\u53d6\u5f97<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ OAuth\u8a8d\u8a3c\u30b5\u30fc\u30d0\u30fc\u306e\u30c8\u30fc\u30af\u30f3\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\n$tokenUrl = 'https:\/\/oauth.example.com\/token';\n\n\/\/ OAuth\u8a8d\u8a3c\u60c5\u5831\n$clientId = 'your_client_id';\n$clientSecret = 'your_client_secret';\n$redirectUri = 'https:\/\/your-app.com\/callback';\n$authorizationCode = $_GET['code'];  \/\/ \u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u5f8c\u306b\u53d7\u3051\u53d6\u3063\u305f\u8a8d\u53ef\u30b3\u30fc\u30c9\n\n\/\/ \u30c8\u30fc\u30af\u30f3\u53d6\u5f97\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6e96\u5099\n$postData = [\n    'grant_type' =&gt; 'authorization_code',\n    'code' =&gt; $authorizationCode,\n    'redirect_uri' =&gt; $redirectUri,\n    'client_id' =&gt; $clientId,\n    'client_secret' =&gt; $clientSecret\n];\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $tokenUrl,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_POST =&gt; true,\n    CURLOPT_POSTFIELDS =&gt; http_build_query($postData),\n    CURLOPT_HTTPHEADER =&gt; [\n        'Content-Type: application\/x-www-form-urlencoded',\n        'Accept: application\/json'\n    ]\n]);\n\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($httpCode == 200) {\n    $tokenData = json_decode($response, true);\n    \n    \/\/ \u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3092\u4fdd\u5b58\n    $accessToken = $tokenData['access_token'];\n    $refreshToken = $tokenData['refresh_token'] ?? null;\n    $expiresIn = $tokenData['expires_in'] ?? null;\n    \n    \/\/ \u30c8\u30fc\u30af\u30f3\u3092\u30bb\u30c3\u30b7\u30e7\u30f3\u3084\u5b89\u5168\u306a\u5834\u6240\u306b\u4fdd\u5b58\n    $_SESSION['access_token'] = $accessToken;\n    if ($refreshToken) {\n        $_SESSION['refresh_token'] = $refreshToken;\n    }\n    \n    echo \"\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u306e\u53d6\u5f97\u306b\u6210\u529f\u3057\u307e\u3057\u305f\u3002\\n\";\n} else {\n    echo \"\u30c8\u30fc\u30af\u30f3\u306e\u53d6\u5f97\u306b\u5931\u6557\u3057\u307e\u3057\u305f: HTTP\u30b3\u30fc\u30c9 $httpCode\\n\";\n    echo $response;\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-72\">\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u7528\u3057\u305fAPI\u547c\u3073\u51fa\u3057<\/h4>\n\n\n\n<p>\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\u3057\u305f\u3089\u3001\u305d\u308c\u3092\u4f7f\u7528\u3057\u3066API\u30ea\u30bd\u30fc\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30a2\u30af\u30bb\u30b9\u3059\u308bAPI\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\n$apiUrl = 'https:\/\/api.example.com\/user\/profile';\n\n\/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u3084\u30b9\u30c8\u30ec\u30fc\u30b8\u304b\u3089\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\n$accessToken = $_SESSION['access_token'];\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $apiUrl,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_HTTPHEADER =&gt; [\n        \"Authorization: Bearer $accessToken\",  \/\/ Bearer\u30c8\u30fc\u30af\u30f3\u5f62\u5f0f\u3067\u306e\u8a8d\u8a3c\n        'Accept: application\/json'\n    ]\n]);\n\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($httpCode == 200) {\n    $userData = json_decode($response, true);\n    echo \"\u30e6\u30fc\u30b6\u30fc\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u53d6\u5f97\u6210\u529f\uff1a\\n\";\n    print_r($userData);\n} elseif ($httpCode == 401) {\n    echo \"\u8a8d\u8a3c\u30a8\u30e9\u30fc: \u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u304c\u7121\u52b9\u307e\u305f\u306f\u671f\u9650\u5207\u308c\u3067\u3059\u3002\\n\";\n    \/\/ \u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u30c8\u30fc\u30af\u30f3\u304c\u3042\u308c\u3070\u65b0\u3057\u3044\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\n    if (isset($_SESSION['refresh_token'])) {\n        echo \"\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u7528\u3057\u3066\u518d\u8a8d\u8a3c\u3092\u8a66\u307f\u307e\u3059...\\n\";\n        \/\/ \u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u3063\u305f\u518d\u8a8d\u8a3c\u51e6\u7406\n    }\n} else {\n    echo \"API\u30a2\u30af\u30bb\u30b9\u30a8\u30e9\u30fc: HTTP\u30b3\u30fc\u30c9 $httpCode\\n\";\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-73\">\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u7528\u3057\u305f\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u306e\u66f4\u65b0<\/h4>\n\n\n\n<p>\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u306f\u901a\u5e38\u3001\u6709\u52b9\u671f\u9650\u304c\u3042\u308a\u307e\u3059\u3002\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3001\u65b0\u3057\u3044\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction refreshAccessToken($refreshToken, $clientId, $clientSecret, $tokenUrl) {\n    \/\/ \u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u30c8\u30fc\u30af\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6e96\u5099\n    $postData = [\n        'grant_type' =&gt; 'refresh_token',\n        'refresh_token' =&gt; $refreshToken,\n        'client_id' =&gt; $clientId,\n        'client_secret' =&gt; $clientSecret\n    ];\n    \n    $ch = curl_init();\n    curl_setopt_array($ch, [\n        CURLOPT_URL =&gt; $tokenUrl,\n        CURLOPT_RETURNTRANSFER =&gt; true,\n        CURLOPT_POST =&gt; true,\n        CURLOPT_POSTFIELDS =&gt; http_build_query($postData),\n        CURLOPT_HTTPHEADER =&gt; [\n            'Content-Type: application\/x-www-form-urlencoded'\n        ]\n    ]);\n    \n    $response = curl_exec($ch);\n    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n    curl_close($ch);\n    \n    if ($httpCode == 200) {\n        $tokenData = json_decode($response, true);\n        return [\n            'success' =&gt; true,\n            'access_token' =&gt; $tokenData['access_token'],\n            'refresh_token' =&gt; $tokenData['refresh_token'] ?? $refreshToken,\n            'expires_in' =&gt; $tokenData['expires_in'] ?? null\n        ];\n    } else {\n        return [\n            'success' =&gt; false,\n            'error' =&gt; \"HTTP\u30a8\u30e9\u30fc: $httpCode\",\n            'response' =&gt; $response\n        ];\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$refreshResult = refreshAccessToken(\n    $_SESSION['refresh_token'],\n    'your_client_id',\n    'your_client_secret',\n    'https:\/\/oauth.example.com\/token'\n);\n\nif ($refreshResult['success']) {\n    $_SESSION['access_token'] = $refreshResult['access_token'];\n    $_SESSION['refresh_token'] = $refreshResult['refresh_token'];\n    echo \"\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u306e\u66f4\u65b0\u306b\u6210\u529f\u3057\u307e\u3057\u305f\u3002\\n\";\n} else {\n    echo \"\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u306e\u66f4\u65b0\u306b\u5931\u6557\u3057\u307e\u3057\u305f: \" . $refreshResult['error'] . \"\\n\";\n    \/\/ \u30e6\u30fc\u30b6\u30fc\u306b\u518d\u30ed\u30b0\u30a4\u30f3\u3092\u4fc3\u3059\u51e6\u7406\u306a\u3069\n}\n?&gt;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-74\">API\u30ad\u30fc\u3092\u4f7f\u7528\u3057\u305f\u8a8d\u8a3c\u306e\u5b9f\u88c5<\/h3>\n\n\n\n<p>\u591a\u304f\u306eWeb\u30b5\u30fc\u30d3\u30b9\u3084API\u3067\u306f\u3001\u30b7\u30f3\u30d7\u30eb\u3055\u3092\u91cd\u8996\u3057\u3066API\u30ad\u30fc\u306b\u3088\u308b\u8a8d\u8a3c\u304c\u63a1\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002API\u30ad\u30fc\u8a8d\u8a3c\u306b\u306f\u3001\u4e3b\u306b\u4ee5\u4e0b\u306e3\u3064\u306e\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>HTTP\u30d8\u30c3\u30c0\u30fc\u3067\u306e\u9001\u4fe1<\/strong><\/li>\n\n\n\n<li><strong>\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u3068\u3057\u3066\u306e\u9001\u4fe1<\/strong><\/li>\n\n\n\n<li><strong>\u30ea\u30af\u30a8\u30b9\u30c8\u30dc\u30c7\u30a3\u3067\u306e\u9001\u4fe1<\/strong>\uff08POST\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5834\u5408\uff09<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-75\">1. HTTP\u30d8\u30c3\u30c0\u30fc\u3092\u4f7f\u7528\u3057\u305fAPI\u30ad\u30fc\u8a8d\u8a3c<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/api.example.com\/data';\n$apiKey = 'your_api_key_here';\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_HTTPHEADER =&gt; [\n        \"X-API-Key: $apiKey\",        \/\/ \u4e00\u822c\u7684\u306aAPI\u30ad\u30fc\u30d8\u30c3\u30c0\u30fc\n        \/\/ \u307e\u305f\u306f\n        \"Authorization: ApiKey $apiKey\"  \/\/ \u8a8d\u8a3c\u30d8\u30c3\u30c0\u30fc\u3068\u3057\u3066\u306e\u9001\u4fe1\n    ]\n]);\n\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\n\/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406\nif ($httpCode == 200) {\n    $data = json_decode($response, true);\n    print_r($data);\n} elseif ($httpCode == 401 || $httpCode == 403) {\n    echo \"\u8a8d\u8a3c\u30a8\u30e9\u30fc: API\u30ad\u30fc\u304c\u7121\u52b9\u307e\u305f\u306f\u671f\u9650\u5207\u308c\u3067\u3059\u3002\\n\";\n} else {\n    echo \"HTTP\u30a8\u30e9\u30fc: $httpCode\\n\";\n}\n?&gt;\n<\/pre>\n\n\n\n<p>\u30d8\u30c3\u30c0\u30fc\u540d\uff08<code>X-API-Key<\/code>\u3001<code>Authorization<\/code>\u306a\u3069\uff09\u306f\u3001API\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306b\u3088\u3063\u3066\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u306e\u3067\u3001API\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-76\">2. \u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u305fAPI\u30ad\u30fc\u8a8d\u8a3c<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$baseUrl = 'https:\/\/api.example.com\/data';\n$apiKey = 'your_api_key_here';\n\n\/\/ URL\u306bAPI\u30ad\u30fc\u3092\u4ed8\u52a0\n$url = $baseUrl . '?' . http_build_query(['api_key' =&gt; $apiKey]);\n\/\/ \u307e\u305f\u306f\n$url = $baseUrl . '?' . http_build_query(['key' =&gt; $apiKey]);\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true\n]);\n\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\n\/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406\n\/\/ ...\n?&gt;\n<\/pre>\n\n\n\n<p>\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u3068\u3057\u3066API\u30ad\u30fc\u3092\u9001\u4fe1\u3059\u308b\u65b9\u6cd5\u306f\u3001\u5b9f\u88c5\u304c\u7c21\u5358\u3067\u3059\u304c\u3001API\u30ad\u30fc\u304cURL\u306e\u4e00\u90e8\u3068\u3057\u3066\u9001\u4fe1\u3055\u308c\u308b\u305f\u3081\u3001\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306a\u3069\u306b\u8a18\u9332\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4e0a\u306e\u7406\u7531\u304b\u3089\u3001\u53ef\u80fd\u3067\u3042\u308c\u3070\u30d8\u30c3\u30c0\u30fc\u8a8d\u8a3c\u3092\u512a\u5148\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-77\">3. POST\u30dc\u30c7\u30a3\u3067\u306eAPI\u30ad\u30fc\u9001\u4fe1<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/api.example.com\/data';\n$apiKey = 'your_api_key_here';\n\n\/\/ POST\u30c7\u30fc\u30bf\u306e\u6e96\u5099\n$postData = [\n    'api_key' =&gt; $apiKey,\n    \/\/ \u305d\u306e\u4ed6\u306e\u30c7\u30fc\u30bf\n    'param1' =&gt; 'value1',\n    'param2' =&gt; 'value2'\n];\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_POST =&gt; true,\n    CURLOPT_POSTFIELDS =&gt; http_build_query($postData)\n]);\n\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\n\/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406\n\/\/ ...\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-78\">API\u30ad\u30fc\u8a8d\u8a3c\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>HTTPS\u901a\u4fe1\u306e\u4f7f\u7528<\/strong>: API\u30ad\u30fc\u306f\u5e73\u6587\u3067\u9001\u4fe1\u3055\u308c\u308b\u305f\u3081\u3001\u5fc5\u305aHTTPS\u901a\u4fe1\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/li>\n\n\n\n<li><strong>API\u30ad\u30fc\u306e\u4fdd\u8b77<\/strong>: API\u30ad\u30fc\u3092\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\uff08Git\u7b49\uff09\u306b\u30b3\u30df\u30c3\u30c8\u3057\u306a\u3044\u3088\u3046\u6ce8\u610f\u3057\u3001\u74b0\u5883\u5909\u6570\u3084\u5b89\u5168\u306a\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8aad\u307f\u8fbc\u3080\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li><strong>\u30ad\u30fc\u306e\u30ed\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3<\/strong>: \u5b9a\u671f\u7684\u306bAPI\u30ad\u30fc\u3092\u66f4\u65b0\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u3092\u5c0e\u5165\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li><strong>\u6700\u5c0f\u6a29\u9650\u306e\u539f\u5247<\/strong>: API\u30ad\u30fc\u306b\u306f\u5fc5\u8981\u6700\u5c0f\u9650\u306e\u6a29\u9650\u306e\u307f\u3092\u4ed8\u4e0e\u3057\u3001\u7570\u306a\u308b\u76ee\u7684\u306b\u306f\u5225\u3005\u306e\u30ad\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u74b0\u5883\u5909\u6570\u304b\u3089API\u30ad\u30fc\u3092\u53d6\u5f97\u3059\u308b\u4f8b\n$apiKey = getenv('API_KEY');\nif (!$apiKey) {\n    \/\/ .env\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8aad\u307f\u8fbc\u3080\uff08dotenv\u30e9\u30a4\u30d6\u30e9\u30ea\u7b49\u3092\u4f7f\u7528\uff09\n    $dotenv = new Dotenv\\Dotenv(__DIR__);\n    $dotenv-&gt;load();\n    $apiKey = getenv('API_KEY');\n}\n\n\/\/ API\u30ad\u30fc\u304c\u53d6\u5f97\u3067\u304d\u306a\u3044\u5834\u5408\u306e\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\nif (!$apiKey) {\n    die('API\u30ad\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002');\n}\n\n\/\/ API\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u51e6\u7406\n\/\/ ...\n?&gt;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-79\">\u307e\u3068\u3081<\/h3>\n\n\n\n<p>PHP\u306ecURL\u3092\u4f7f\u7528\u3057\u3066\u3001\u69d8\u3005\u306a\u8a8d\u8a3c\u65b9\u5f0f\u3092\u5b9f\u88c5\u3059\u308b\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3057\u305f\u3002\u4f7f\u7528\u3059\u308bAPI\u306e\u8981\u4ef6\u306b\u5fdc\u3058\u3066\u3001\u9069\u5207\u306a\u8a8d\u8a3c\u65b9\u5f0f\u3092\u9078\u629e\u3057\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3046\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u57fa\u672c\u8a8d\u8a3c<\/strong>\uff1a\u30b7\u30f3\u30d7\u30eb\u306a\u5b9f\u88c5\u3067\u3059\u304c\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306b\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002\u4e3b\u306b\u30c6\u30b9\u30c8\u74b0\u5883\u3084\u5185\u90e8API\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>OAuth\u8a8d\u8a3c<\/strong>\uff1a\u6700\u3082\u5b89\u5168\u3067\u67d4\u8edf\u306a\u8a8d\u8a3c\u65b9\u5f0f\u3067\u3059\u3002\u7279\u306b\u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u5fc5\u8981\u3068\u3059\u308bAPI\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>API\u30ad\u30fc\u8a8d\u8a3c<\/strong>\uff1a\u5b9f\u88c5\u304c\u7c21\u5358\u3067\u3001\u591a\u304f\u306eAPI\u3067\u63a1\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u9069\u5207\u306b\u6271\u3048\u3070\u3001\u591a\u304f\u306e\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306b\u5341\u5206\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u8a8d\u8a3c\u65b9\u6cd5\u3092\u9069\u5207\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001API\u3068\u306e\u5b89\u5168\u306a\u9023\u643a\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u7ae0\u3067\u306f\u3001cURL\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u6700\u9069\u5316\u3059\u308b\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-80\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af5\uff1a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316<\/h2>\n\n\n\n<p>API\u3084Web\u30b5\u30fc\u30d3\u30b9\u3068\u306e\u9023\u643a\u3067\u306f\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306f\u91cd\u8981\u306a\u8981\u7d20\u3067\u3059\u3002\u7279\u306b\u591a\u6570\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3059\u308b\u5834\u5408\u3084\u3001\u30e2\u30d0\u30a4\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306a\u3069\u9045\u5ef6\u306e\u5927\u304d\u3044\u74b0\u5883\u3067\u306f\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u304c\u4e0d\u53ef\u6b20\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001PHP\u306ecURL\u3092\u4f7f\u7528\u3057\u305f\u901a\u4fe1\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306e3\u3064\u306e\u4e3b\u8981\u306a\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-81\">\u63a5\u7d9a\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a<\/h3>\n\n\n\n<p>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a\u306f\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u63a5\u7d9a\u306b\u554f\u984c\u304c\u3042\u308b\u5834\u5408\u3084\u5fdc\u7b54\u306e\u9045\u3044\u30b5\u30fc\u30d0\u30fc\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5834\u5408\u306b\u3001\u7121\u9650\u306b\u5f85\u3061\u7d9a\u3051\u308b\u3053\u3068\u3092\u9632\u3050\u305f\u3081\u306e\u91cd\u8981\u306a\u8a2d\u5b9a\u3067\u3059\u3002\u9069\u5207\u306a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u5024\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5fdc\u7b54\u6027\u3092\u5411\u4e0a\u3055\u305b\u3001\u30ea\u30bd\u30fc\u30b9\u306e\u7121\u99c4\u306a\u6d88\u8cbb\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-82\">\u4e3b\u8981\u306a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u30aa\u30d7\u30b7\u30e7\u30f3<\/h4>\n\n\n\n<p>cURL\u3067\u306f\u3001\u4ee5\u4e0b\u306e2\u3064\u306e\u4e3b\u8981\u306a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>CURLOPT_CONNECTTIMEOUT<\/strong>\uff1a\u30b5\u30fc\u30d0\u30fc\u3078\u306e\u63a5\u7d9a\u78ba\u7acb\u307e\u3067\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u6642\u9593\uff08\u79d2\uff09<\/li>\n\n\n\n<li><strong>CURLOPT_TIMEOUT<\/strong>\uff1a\u30ea\u30af\u30a8\u30b9\u30c8\u5168\u4f53\u306e\u5b8c\u4e86\u307e\u3067\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u6642\u9593\uff08\u79d2\uff09<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u9055\u3044\u3092\u7406\u89e3\u3057\u3001\u9069\u5207\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/api.example.com\/data';\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    \n    \/\/ \u63a5\u7d9a\u78ba\u7acb\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\uff085\u79d2\uff09\n    CURLOPT_CONNECTTIMEOUT =&gt; 5,\n    \n    \/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5168\u4f53\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\uff0830\u79d2\uff09\n    CURLOPT_TIMEOUT =&gt; 30\n]);\n\n\/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306e\u79d2\u672a\u6e80\u306e\u7cbe\u5ea6\u304c\u5fc5\u8981\u306a\u5834\u5408\n\/\/ \u30df\u30ea\u79d2\u5358\u4f4d\u3067\u6307\u5b9a\uff08\u4f8b\uff1a2.5\u79d2 = 2500\u30df\u30ea\u79d2\uff09\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 2500);\ncurl_setopt($ch, CURLOPT_TIMEOUT_MS, 15000);\n\n$response = curl_exec($ch);\n\n\/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u30a8\u30e9\u30fc\u306e\u78ba\u8a8d\nif (curl_errno($ch) == CURLE_OPERATION_TIMEDOUT) {\n    echo \"\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\\n\";\n}\n\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-83\">\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u5024\u306e\u6700\u9069\u5316<\/h4>\n\n\n\n<p>\u9069\u5207\u306a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u5024\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6027\u8cea\u3084\u30e6\u30fc\u30b6\u30fc\u306e\u671f\u5f85\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001\u7570\u306a\u308b\u30b7\u30ca\u30ea\u30aa\u306b\u5fdc\u3058\u305f\u63a8\u5968\u5024\u3067\u3059\uff1a<\/p>\n\n\n<div id=\"id-7ffd08b6-f02f-4bed-83b2-9aeec08421ac\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30b7\u30ca\u30ea\u30aa<\/th><th>CURLOPT_CONNECTTIMEOUT<\/th><th>CURLOPT_TIMEOUT<\/th><th>\u7406\u7531<\/th><\/tr><\/thead><tbody><tr><td>\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\uff08\u540c\u671f\u51e6\u7406\uff09<\/td><td>2\u301c3\u79d2<\/td><td>5\u301c10\u79d2<\/td><td>\u30e6\u30fc\u30b6\u30fc\u306f\u901a\u5e385\u79d2\u4ee5\u4e0a\u306e\u5f85\u3061\u6642\u9593\u3092\u8a31\u5bb9\u3057\u306a\u3044<\/td><\/tr><tr><td>\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u51e6\u7406\uff08\u975e\u540c\u671f\uff09<\/td><td>5\u301c10\u79d2<\/td><td>30\u301c60\u79d2<\/td><td>\u3088\u308a\u9577\u3044\u51e6\u7406\u6642\u9593\u304c\u8a31\u5bb9\u3055\u308c\u308b<\/td><\/tr><tr><td>\u5927\u304d\u306a\u30d5\u30a1\u30a4\u30eb\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/td><td>5\u79d2<\/td><td>300\u79d2\u4ee5\u4e0a<\/td><td>\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u306b\u5fdc\u3058\u3066\u9577\u3044\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u304c\u5fc5\u8981<\/td><\/tr><tr><td>\u4fe1\u983c\u6027\u306e\u4f4e\u3044\u30cd\u30c3\u30c8\u30ef\u30fc\u30af<\/td><td>10\u79d2\u4ee5\u4e0a<\/td><td>60\u79d2\u4ee5\u4e0a<\/td><td>\u63a5\u7d9a\u78ba\u7acb\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"i-84\">\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u767a\u751f\u6642\u306e\u5bfe\u5fdc<\/h4>\n\n\n\n<p>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306e\u9069\u5207\u306a\u51e6\u7406\u3082\u91cd\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction makeRequestWithRetry($url, $maxRetries = 3, $initialTimeout = 5) {\n    $retries = 0;\n    \n    while ($retries &lt;= $maxRetries) {\n        $ch = curl_init();\n        \n        \/\/ \u30ea\u30c8\u30e9\u30a4\u3054\u3068\u306b\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3092\u5897\u3084\u3059\uff08\u6307\u6570\u30d0\u30c3\u30af\u30aa\u30d5\uff09\n        $timeout = $initialTimeout * pow(2, $retries);\n        \n        curl_setopt_array($ch, [\n            CURLOPT_URL =&gt; $url,\n            CURLOPT_RETURNTRANSFER =&gt; true,\n            CURLOPT_CONNECTTIMEOUT =&gt; min($timeout, 30), \/\/ \u6700\u592730\u79d2\u307e\u3067\n            CURLOPT_TIMEOUT =&gt; min($timeout * 2, 60)      \/\/ \u6700\u592760\u79d2\u307e\u3067\n        ]);\n        \n        $response = curl_exec($ch);\n        $error = curl_errno($ch);\n        $info = curl_getinfo($ch);\n        curl_close($ch);\n        \n        \/\/ \u6210\u529f\u3057\u305f\u5834\u5408\n        if ($error === 0) {\n            return [\n                'success' =&gt; true,\n                'response' =&gt; $response,\n                'info' =&gt; $info\n            ];\n        }\n        \n        \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306e\u5834\u5408\u306f\u30ea\u30c8\u30e9\u30a4\n        if ($error === CURLE_OPERATION_TIMEDOUT) {\n            $retries++;\n            $waitTime = pow(2, $retries - 1); \/\/ \u6307\u6570\u30d0\u30c3\u30af\u30aa\u30d5\u5f85\u6a5f\u6642\u9593\n            \n            if ($retries &lt;= $maxRetries) {\n                echo \"\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002{$waitTime}\u79d2\u5f8c\u306b\u30ea\u30c8\u30e9\u30a4\u3057\u307e\u3059\uff08{$retries}\/{$maxRetries}\uff09...\\n\";\n                sleep($waitTime);\n            }\n        } else {\n            \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u4ee5\u5916\u306e\u30a8\u30e9\u30fc\u306f\u5373\u5ea7\u306b\u5931\u6557\n            return [\n                'success' =&gt; false,\n                'error' =&gt; curl_error($ch),\n                'errno' =&gt; $error\n            ];\n        }\n    }\n    \n    return [\n        'success' =&gt; false,\n        'error' =&gt; '\u30ea\u30c8\u30e9\u30a4\u56de\u6570\u306e\u4e0a\u9650\u306b\u9054\u3057\u307e\u3057\u305f',\n        'errno' =&gt; CURLE_OPERATION_TIMEDOUT\n    ];\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$result = makeRequestWithRetry('https:\/\/api.example.com\/data');\nif ($result['success']) {\n    echo \"\u30ea\u30af\u30a8\u30b9\u30c8\u6210\u529f: \" . substr($result['response'], 0, 100) . \"...\\n\";\n} else {\n    echo \"\u30ea\u30af\u30a8\u30b9\u30c8\u5931\u6557: \" . $result['error'] . \"\\n\";\n}\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306b\u6307\u6570\u30d0\u30c3\u30af\u30aa\u30d5\u3092\u7528\u3044\u3066\u30ea\u30c8\u30e9\u30a4\u3059\u308b\u6226\u7565\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u4e00\u6642\u7684\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u554f\u984c\u306b\u5bfe\u3059\u308b\u56de\u5fa9\u529b\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-85\">\u30ad\u30fc\u30d7\u30a2\u30e9\u30a4\u30d6\u306e\u6d3b\u7528\u65b9\u6cd5<\/h3>\n\n\n\n<p>HTTP\u30ad\u30fc\u30d7\u30a2\u30e9\u30a4\u30d6\u306f\u3001\u8907\u6570\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u540c\u3058TCP\u63a5\u7d9a\u3092\u518d\u5229\u7528\u3059\u308b\u305f\u3081\u306e\u4ed5\u7d44\u307f\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5404\u30ea\u30af\u30a8\u30b9\u30c8\u3054\u3068\u306bTCP\u63a5\u7d9a\u306e\u78ba\u7acb\u3068SSL\u30cf\u30f3\u30c9\u30b7\u30a7\u30a4\u30af\u3092\u884c\u3046\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u3092\u524a\u6e1b\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u540c\u3058\u30b5\u30fc\u30d0\u30fc\u306b\u5bfe\u3057\u3066\u8907\u6570\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u5834\u5408\u306b\u52b9\u679c\u7684\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-86\">\u30ad\u30fc\u30d7\u30a2\u30e9\u30a4\u30d6\u306e\u8a2d\u5b9a<\/h4>\n\n\n\n<p>PHP\u306ecURL\u3067\u306f\u3001<code>CURLOPT_TCP_KEEPALIVE<\/code>\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066TCP\u30ad\u30fc\u30d7\u30a2\u30e9\u30a4\u30d6\u3092\u6709\u52b9\u306b\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; 'https:\/\/api.example.com\/data',\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    \n    \/\/ TCP\u30ad\u30fc\u30d7\u30a2\u30e9\u30a4\u30d6\u3092\u6709\u52b9\u5316\n    CURLOPT_TCP_KEEPALIVE =&gt; 1,\n    \n    \/\/ \u30ad\u30fc\u30d7\u30a2\u30e9\u30a4\u30d6\u30d7\u30ed\u30fc\u30d6\u306e\u9593\u9694\uff08\u79d2\uff09\n    CURLOPT_TCP_KEEPIDLE =&gt; 60,\n    \n    \/\/ \u30d7\u30ed\u30fc\u30d6\u9593\u306e\u9593\u9694\uff08\u79d2\uff09\n    CURLOPT_TCP_KEEPINTVL =&gt; 60\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<p>\u307e\u305f\u3001HTTP\u5c64\u3067\u306e\u30ad\u30fc\u30d7\u30a2\u30e9\u30a4\u30d6\u306f\u3001<code>Connection: close<\/code>\u30d8\u30c3\u30c0\u30fc\u3092\u9001\u4fe1\u3057\u306a\u3044\u3053\u3068\u3067\u6709\u52b9\u306b\u306a\u308a\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001cURL\u306fHTTP\u30ad\u30fc\u30d7\u30a2\u30e9\u30a4\u30d6\u3092\u4f7f\u7528\u3057\u307e\u3059\u304c\u3001\u660e\u793a\u7684\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\ncurl_setopt($ch, CURLOPT_HTTPHEADER, ['Connection: keep-alive']);\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-87\">\u30de\u30eb\u30c1\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u306e\u30ad\u30fc\u30d7\u30a2\u30e9\u30a4\u30d6\u306e\u52b9\u679c<\/h4>\n\n\n\n<p>\u540c\u3058\u30b5\u30fc\u30d0\u30fc\u306b\u5bfe\u3057\u3066\u8907\u6570\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u5834\u5408\u3001cURL\u30cf\u30f3\u30c9\u30eb\u3092\u518d\u5229\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30ad\u30fc\u30d7\u30a2\u30e9\u30a4\u30d6\u306e\u52b9\u679c\u3092\u6700\u5927\u5316\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5148URL\n$urls = [\n    'https:\/\/api.example.com\/users',\n    'https:\/\/api.example.com\/products',\n    'https:\/\/api.example.com\/orders'\n];\n\n\/\/ \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8a08\u6e2c\u7528\u306e\u6642\u9593\n$startTime = microtime(true);\n\n\/\/ cURL\u30cf\u30f3\u30c9\u30eb\u3092\u521d\u671f\u5316\uff08\u4e00\u5ea6\u3060\u3051\uff09\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_TCP_KEEPALIVE =&gt; 1,  \/\/ TCP\u30ad\u30fc\u30d7\u30a2\u30e9\u30a4\u30d6\u6709\u52b9\u5316\n]);\n\n$results = [];\n\n\/\/ \u8907\u6570\u306eURL\u306b\u5bfe\u3057\u3066\u540c\u3058\u30cf\u30f3\u30c9\u30eb\u3092\u518d\u5229\u7528\nforeach ($urls as $url) {\n    \/\/ URL\u3092\u66f4\u65b0\n    curl_setopt($ch, CURLOPT_URL, $url);\n    \n    \/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\n    $results[] = curl_exec($ch);\n    \n    \/\/ \u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30af\n    if (curl_errno($ch)) {\n        echo '\u30a8\u30e9\u30fc: ' . curl_error($ch) . \" - URL: $url\\n\";\n    }\n}\n\n\/\/ \u6700\u5f8c\u306b\u30cf\u30f3\u30c9\u30eb\u3092\u9589\u3058\u308b\ncurl_close($ch);\n\n$endTime = microtime(true);\n$totalTime = $endTime - $startTime;\n\necho \"\u5408\u8a08\u5b9f\u884c\u6642\u9593: {$totalTime} \u79d2\\n\";\n\n\/\/ \u7d50\u679c\u306e\u51e6\u7406\nforeach ($results as $index =&gt; $response) {\n    echo \"URL {$urls[$index]} \u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u9577: \" . strlen($response) . \" \u30d0\u30a4\u30c8\\n\";\n}\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u65b9\u6cd5\u3067\u306f\u3001cURL\u30cf\u30f3\u30c9\u30eb\u3092\u518d\u5229\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u63a5\u7d9a\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u6642\u9593\u304c\u524a\u6e1b\u3055\u308c\u3001\u6b21\u306e\u3088\u3046\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5411\u4e0a\u304c\u671f\u5f85\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>TCP\u63a5\u7d9a\u78ba\u7acb\u306e\u56de\u907f<\/strong>\uff1a3-way handshake\u306e\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u3092\u524a\u6e1b\uff08\u7d041RTT\uff09<\/li>\n\n\n\n<li><strong>SSL\u30cf\u30f3\u30c9\u30b7\u30a7\u30a4\u30af\u306e\u56de\u907f<\/strong>\uff1a\u6700\u3082\u5927\u304d\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6539\u5584\uff08\u7d042-3RTT\uff09<\/li>\n\n\n\n<li><strong>TCP\u30b9\u30ed\u30fc\u30b9\u30bf\u30fc\u30c8\u306e\u907f\u3051<\/strong>: \u78ba\u7acb\u6e08\u307f\u63a5\u7d9a\u3067\u306f\u65e2\u306b\u9069\u5207\u306a\u8f3b\u8f33\u30a6\u30a3\u30f3\u30c9\u30a6\u304c\u8a2d\u5b9a\u6e08\u307f<\/li>\n<\/ol>\n\n\n\n<p>\u5b9f\u969b\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5411\u4e0a\u306f\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u9045\u5ef6\u6642\u9593\uff08RTT\uff09\u306b\u5927\u304d\u304f\u4f9d\u5b58\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001RTT\u304c100ms\u306e\u5834\u5408\u3001SSL\u30cf\u30f3\u30c9\u30b7\u30a7\u30a4\u30af\u306e\u56de\u907f\u3060\u3051\u3067\u7d04200-300ms\u306e\u6539\u5584\u304c\u898b\u8fbc\u3081\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-88\">\u5727\u7e2e\u8ee2\u9001\u306e\u5229\u7528\uff08gzip\uff09<\/h3>\n\n\n\n<p>HTTP\u306e\u5727\u7e2e\u8ee2\u9001\u3092\u5229\u7528\u3059\u308b\u3068\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u7d4c\u7531\u3067\u8ee2\u9001\u3055\u308c\u308b\u30c7\u30fc\u30bf\u91cf\u3092\u524a\u6e1b\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u30c6\u30ad\u30b9\u30c8\u30d9\u30fc\u30b9\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\uff08JSON\u3001XML\u3001HTML\u306a\u3069\uff09\u306b\u5bfe\u3057\u3066\u52b9\u679c\u7684\u3067\u3059\u3002PHP\u306ecURL\u3067\u306f\u3001\u3053\u306e\u6a5f\u80fd\u3092\u7c21\u5358\u306b\u6709\u52b9\u306b\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-89\">gzip\u5727\u7e2e\u306e\u6709\u52b9\u5316<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/api.example.com\/large-data';\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    \n    \/\/ \u5727\u7e2e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u53d7\u3051\u5165\u308c\u308b\n    CURLOPT_ENCODING =&gt; '',  \/\/ \u7a7a\u6587\u5b57\u5217\u306f\u300c\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u3059\u3079\u3066\u306e\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u300d\u3092\u610f\u5473\u3059\u308b\n    \n    \/\/ \u307e\u305f\u306f\u660e\u793a\u7684\u306b\u6307\u5b9a\n    \/\/ CURLOPT_ENCODING =&gt; 'gzip, deflate, br'\n]);\n\n\/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\n$response = curl_exec($ch);\n\n\/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u30b5\u30a4\u30ba\u306e\u60c5\u5831\u3092\u53d6\u5f97\n$downloadSize = curl_getinfo($ch, CURLINFO_SIZE_DOWNLOAD);      \/\/ \u5727\u7e2e\u3055\u308c\u305f\u30b5\u30a4\u30ba\n$contentLength = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); \/\/ \u5727\u7e2e\u524d\u306e\u30b5\u30a4\u30ba\n\ncurl_close($ch);\n\n\/\/ \u5727\u7e2e\u7387\u306e\u8a08\u7b97\uff08Content-Length\u30d8\u30c3\u30c0\u30fc\u304c\u3042\u308b\u5834\u5408\uff09\nif ($contentLength &gt; 0 &amp;&amp; $downloadSize &gt; 0) {\n    $compressionRatio = (1 - ($downloadSize \/ $contentLength)) * 100;\n    echo \"\u5727\u7e2e\u7387: \" . number_format($compressionRatio, 2) . \"%\\n\";\n    echo \"\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30b5\u30a4\u30ba: \" . formatBytes($downloadSize) . \" \/ \u5143\u306e\u30b5\u30a4\u30ba: \" . formatBytes($contentLength) . \"\\n\";\n}\n\n\/\/ \u30d0\u30a4\u30c8\u6570\u3092\u8aad\u307f\u3084\u3059\u3044\u5f62\u5f0f\u306b\u5909\u63db\u3059\u308b\u95a2\u6570\nfunction formatBytes($bytes, $precision = 2) {\n    $units = ['B', 'KB', 'MB', 'GB', 'TB'];\n    $bytes = max($bytes, 0);\n    $pow = floor(($bytes ? log($bytes) : 0) \/ log(1024));\n    $pow = min($pow, count($units) - 1);\n    $bytes \/= pow(1024, $pow);\n    return round($bytes, $precision) . ' ' . $units[$pow];\n}\n\n\/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406\n$data = json_decode($response, true);\n\/\/ ...\n?&gt;\n<\/pre>\n\n\n\n<p><code>CURLOPT_ENCODING<\/code>\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3059\u308b\u3068\u3001cURL\u306f\u81ea\u52d5\u7684\u306b<code>Accept-Encoding<\/code>\u30d8\u30c3\u30c0\u30fc\u3092\u9001\u4fe1\u3057\u3001\u30b5\u30fc\u30d0\u30fc\u304b\u3089\u306e\u5727\u7e2e\u3055\u308c\u305f\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u9069\u5207\u306b\u51e6\u7406\uff08\u89e3\u51cd\uff09\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8ee2\u9001\u30c7\u30fc\u30bf\u91cf\u306e\u524a\u6e1b<\/strong>\uff1a\u7279\u306b\u30c6\u30ad\u30b9\u30c8\u30c7\u30fc\u30bf\u3067\u306f\u3001\u5727\u7e2e\u7387\u304c70-90%\u306b\u9054\u3059\u308b\u3053\u3068\u3082\u73cd\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002<\/li>\n\n\n\n<li><strong>\u8ee2\u9001\u6642\u9593\u306e\u77ed\u7e2e<\/strong>\uff1a\u7279\u306b\u5e2f\u57df\u5e45\u306b\u5236\u9650\u306e\u3042\u308b\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u74b0\u5883\u3067\u52b9\u679c\u7684\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30b3\u30b9\u30c8\u524a\u6e1b<\/strong>\uff1aAPI\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304c\u8ee2\u9001\u91cf\u306b\u57fa\u3065\u304f\u8ab2\u91d1\u3092\u884c\u3063\u3066\u3044\u308b\u5834\u5408\u306b\u6709\u7528\u3067\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-90\">\u5727\u7e2e\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5f71\u97ff<\/h4>\n\n\n\n<p>\u5727\u7e2e\u306b\u306fCPU\u30ea\u30bd\u30fc\u30b9\u304c\u5fc5\u8981\u306a\u305f\u3081\u3001\u4ee5\u4e0b\u306e\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u5c0f\u3055\u306a\u30ec\u30b9\u30dd\u30f3\u30b9<\/strong>\uff08\u6570KB\u4ee5\u4e0b\uff09\uff1a\u5727\u7e2e\u306e\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u304c\u8ee2\u9001\u6642\u9593\u306e\u77ed\u7e2e\u3092\u4e0a\u56de\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u5927\u304d\u306a\u30ec\u30b9\u30dd\u30f3\u30b9<\/strong>\uff08\u6570\u5341KB\u4ee5\u4e0a\uff09\uff1a\u5727\u7e2e\u306b\u3088\u308b\u8ee2\u9001\u6642\u9593\u306e\u77ed\u7e2e\u304c\u5727\u7e2e\u51e6\u7406\u306e\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u3092\u4e0a\u56de\u308a\u3001\u5168\u4f53\u7684\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u591a\u304f\u306e\u5834\u5408\u3001API\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u30b5\u30a4\u30ba\u306f\u5341\u5206\u5927\u304d\u3044\u305f\u3081\u3001\u5727\u7e2e\u3092\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u3067\u5168\u4f53\u7684\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002\u7279\u306b\u3001\u30e2\u30d0\u30a4\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306a\u3069\u5e2f\u57df\u5e45\u306b\u5236\u9650\u306e\u3042\u308b\u74b0\u5883\u3067\u306f\u3001\u5727\u7e2e\u306e\u52b9\u679c\u304c\u9855\u8457\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-91\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u305f\u3081\u306e\u305d\u306e\u4ed6\u306e\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<p>\u4e0a\u8a18\u306e3\u3064\u306e\u4e3b\u8981\u306a\u30c6\u30af\u30cb\u30c3\u30af\u306b\u52a0\u3048\u3066\u3001\u4ee5\u4e0b\u306e\u65b9\u6cd5\u3067\u3082cURL\u901a\u4fe1\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-92\">DNS\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u6d3b\u7528<\/h4>\n\n\n\n<p>\u540c\u3058\u30db\u30b9\u30c8\u306b\u5bfe\u3057\u3066\u8907\u6570\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u5834\u5408\u3001DNS\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u7d50\u679c\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u3059\u308b\u3053\u3068\u3067\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ DNS\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u6709\u52b9\u5316\n$dnsCache = [];\n\nfunction makeApiRequest($url) {\n    global $dnsCache;\n    \n    $ch = curl_init();\n    curl_setopt_array($ch, [\n        CURLOPT_URL =&gt; $url,\n        CURLOPT_RETURNTRANSFER =&gt; true\n    ]);\n    \n    \/\/ \u30db\u30b9\u30c8\u540d\u3092\u62bd\u51fa\n    $parsedUrl = parse_url($url);\n    $hostname = $parsedUrl['host'];\n    \n    \/\/ DNS\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u30a8\u30f3\u30c8\u30ea\u304c\u3042\u308c\u3070IP\u30a2\u30c9\u30ec\u30b9\u3092\u76f4\u63a5\u4f7f\u7528\n    if (isset($dnsCache[$hostname])) {\n        \/\/ CURLOPT_RESOLVE\u3067DNS\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u30d0\u30a4\u30d1\u30b9\n        curl_setopt($ch, CURLOPT_RESOLVE, [\n            \"$hostname:\" . ($parsedUrl['port'] ?? 443) . \":\" . $dnsCache[$hostname]\n        ]);\n    }\n    \n    $response = curl_exec($ch);\n    \n    \/\/ DNS\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u8ffd\u52a0\uff08\u307e\u3060\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\uff09\n    if (!isset($dnsCache[$hostname])) {\n        $ipAddress = gethostbyname($hostname);\n        if ($ipAddress !== $hostname) { \/\/ gethostbyname\u306f\u89e3\u6c7a\u5931\u6557\u6642\u306b\u30db\u30b9\u30c8\u540d\u3092\u305d\u306e\u307e\u307e\u8fd4\u3059\n            $dnsCache[$hostname] = $ipAddress;\n        }\n    }\n    \n    curl_close($ch);\n    return $response;\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-93\">\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u30ea\u30af\u30a8\u30b9\u30c8<\/h4>\n\n\n\n<p>HTTP\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u8907\u6570\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u540c\u6642\u306b\u9001\u4fe1\u3057\u3001\u5fdc\u7b54\u3092\u5f85\u3064\u3053\u3068\u306a\u304f\u51e6\u7406\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u6ce8\u610f: HTTP\/1.1\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306f\u30b5\u30fc\u30d0\u30fc\u5074\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u5fc5\u8981\u3067\u3001\n\/\/ \u591a\u304f\u306e\u30b5\u30fc\u30d0\u30fc\u3067\u306f\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002HTTP\/2\u3092\u4f7f\u7528\u3059\u308b\u65b9\u304c\u826f\u3044\u5834\u5408\u304c\u591a\u3044\u3067\u3059\u3002\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; 'https:\/\/api.example.com\/data',\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_PIPEWAIT =&gt; 1  \/\/ \u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u4f7f\u7528\u3092\u8a31\u53ef\n]);\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-94\">HTTP\/2\u306e\u5229\u7528<\/h4>\n\n\n\n<p>HTTP\/2\u306f\u3001\u591a\u91cd\u5316\u3001\u30d8\u30c3\u30c0\u30fc\u5727\u7e2e\u3001\u30b5\u30fc\u30d0\u30fc\u30d7\u30c3\u30b7\u30e5\u306a\u3069\u306e\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; 'https:\/\/api.example.com\/data',\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_HTTP_VERSION =&gt; CURL_HTTP_VERSION_2_0  \/\/ HTTP\/2\u3092\u512a\u5148\n]);\n?&gt;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-95\">\u307e\u3068\u3081<\/h3>\n\n\n\n<p>\u3053\u306e\u7ae0\u3067\u306f\u3001PHP\u306ecURL\u3092\u4f7f\u7528\u3057\u305fAPI\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u6700\u9069\u5316\u3059\u308b\u305f\u3081\u306e\u4e3b\u8981\u306a\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3057\u305f\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u9069\u5207\u306a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a<\/strong>\uff1a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5fdc\u7b54\u6027\u3092\u78ba\u4fdd\u3057\u3001\u30ea\u30bd\u30fc\u30b9\u306e\u7121\u99c4\u306a\u6d88\u8cbb\u3092\u9632\u304e\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30ad\u30fc\u30d7\u30a2\u30e9\u30a4\u30d6\u306e\u6d3b\u7528<\/strong>\uff1a\u63a5\u7d9a\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u6642\u9593\u3092\u524a\u6e1b\u3057\u3001\u7279\u306b\u540c\u3058\u30b5\u30fc\u30d0\u30fc\u3078\u306e\u8907\u6570\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u52b9\u679c\u7684\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>\u5727\u7e2e\u8ee2\u9001\uff08gzip\uff09<\/strong>\uff1a\u8ee2\u9001\u30c7\u30fc\u30bf\u91cf\u3092\u524a\u6e1b\u3057\u3001\u7279\u306b\u5927\u304d\u306a\u30ec\u30b9\u30dd\u30f3\u30b9\u3084\u5e2f\u57df\u5e45\u306b\u5236\u9650\u306e\u3042\u308b\u74b0\u5883\u3067\u52b9\u679c\u7684\u3067\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001API\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u5927\u5e45\u306b\u5411\u4e0a\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5168\u4f53\u306e\u5fdc\u7b54\u6027\u3068\u52b9\u7387\u6027\u304c\u6539\u5584\u3055\u308c\u307e\u3059\u3002\u6b21\u306e\u7ae0\u3067\u306f\u3001cURL\u3092\u4f7f\u7528\u3059\u308b\u969b\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-96\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af6\uff1a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56<\/h2>\n\n\n\n<p>API\u3084Web\u30b5\u30fc\u30d3\u30b9\u3068\u306e\u9023\u643a\u306b\u304a\u3044\u3066\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u540c\u69d8\u306b\u91cd\u8981\u306a\u306e\u304c\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3067\u3059\u3002\u9069\u5207\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\u3092\u65bd\u3055\u306a\u3044\u3068\u3001\u30c7\u30fc\u30bf\u6f0f\u6d29\u3084\u4e0d\u6b63\u30a2\u30af\u30bb\u30b9\u306a\u3069\u306e\u6df1\u523b\u306a\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001PHP\u306ecURL\u3092\u4f7f\u7528\u3059\u308b\u969b\u306b\u5b9f\u88c5\u3059\u3079\u304d\u4e3b\u8981\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-97\">SSL\u8a3c\u660e\u66f8\u306e\u691c\u8a3c\u3068\u5b89\u5168\u306a\u63a5\u7d9a<\/h3>\n\n\n\n<p>HTTPS\u901a\u4fe1\u306e\u5b89\u5168\u6027\u306f\u3001SSL\/TLS\u8a3c\u660e\u66f8\u306e\u691c\u8a3c\u306b\u5927\u304d\u304f\u4f9d\u5b58\u3057\u3066\u3044\u307e\u3059\u3002\u6b8b\u5ff5\u306a\u304c\u3089\u3001\u958b\u767a\u306e\u4fbf\u5b9c\u4e0a\u3084\u554f\u984c\u89e3\u6c7a\u306e\u904e\u7a0b\u3067\u8a3c\u660e\u66f8\u691c\u8a3c\u3092\u7121\u52b9\u5316\u3057\u3066\u3057\u307e\u3046\u30b3\u30fc\u30c9\u304c\u898b\u3089\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u6df1\u523b\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ea\u30b9\u30af\u3092\u751f\u3058\u3055\u305b\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-98\">\u5b89\u5168\u306a\u8a3c\u660e\u66f8\u691c\u8a3c\u8a2d\u5b9a<\/h4>\n\n\n\n<p>\u5b89\u5168\u306acURL\u63a5\u7d9a\u306e\u305f\u3081\u306e\u57fa\u672c\u8a2d\u5b9a\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/api.example.com\/data';\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    \n    \/\/ SSL\u8a3c\u660e\u66f8\u306e\u691c\u8a3c\u3092\u6709\u52b9\u5316\uff08\u5fc5\u9808\uff09\n    CURLOPT_SSL_VERIFYPEER =&gt; true,\n    \n    \/\/ \u30db\u30b9\u30c8\u540d\u306e\u691c\u8a3c\u3092\u6709\u52b9\u5316\uff08\u5fc5\u9808\uff09\n    CURLOPT_SSL_VERIFYHOST =&gt; 2,\n    \n    \/\/ TLSv1.2\u4ee5\u4e0a\u3092\u5f37\u5236\uff08\u53e4\u3044\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u4f7f\u7528\u3057\u306a\u3044\uff09\n    CURLOPT_SSLVERSION =&gt; CURL_SSLVERSION_TLSv1_2\n]);\n\n$response = curl_exec($ch);\n\n\/\/ SSL\u30a8\u30e9\u30fc\u306e\u78ba\u8a8d\nif (curl_errno($ch) == CURLE_SSL_CONNECT_ERROR) {\n    echo \"SSL\u63a5\u7d9a\u30a8\u30e9\u30fc: \" . curl_error($ch) . \"\\n\";\n    \/\/ \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30a8\u30e9\u30fc\u3092\u8a18\u9332\n    error_log('SSL\u8a3c\u660e\u66f8\u691c\u8a3c\u30a8\u30e9\u30fc: ' . curl_error($ch));\n}\n\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u8a2d\u5b9a\u3067\u306f\u3001<code>CURLOPT_SSL_VERIFYPEER<\/code>\u3092<code>true<\/code>\u306b\u3001<code>CURLOPT_SSL_VERIFYHOST<\/code>\u3092<code>2<\/code>\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u8a3c\u660e\u66f8\u3068\u30db\u30b9\u30c8\u540d\u306e\u4e21\u65b9\u3092\u53b3\u683c\u306b\u691c\u8a3c\u3057\u307e\u3059\u3002\u307e\u305f\u3001<code>CURLOPT_SSLVERSION<\/code>\u3092\u4f7f\u7528\u3057\u3066\u5b89\u5168\u306aTLS\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-99\">\u5371\u967a\u306a\u8a2d\u5b9a\u3068\u56de\u907f\u3059\u3079\u304d\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30b3\u30fc\u30c9\u306f\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ea\u30b9\u30af\u304c\u9ad8\u3044\u305f\u3081\u3001\u672c\u756a\u74b0\u5883\u3067\u306f\u7d76\u5bfe\u306b\u4f7f\u7528\u3059\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5371\u967a\u306a\u8a2d\u5b9a - \u7d76\u5bfe\u306b\u4f7f\u7528\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\uff01\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);\n<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u306f\u4e2d\u9593\u8005\u653b\u6483\uff08MITM\uff09\u3092\u53ef\u80fd\u306b\u3057\u3001\u901a\u4fe1\u306e\u6697\u53f7\u5316\u3068\u3044\u3046 HTTPS \u306e\u4e3b\u8981\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u6a5f\u80fd\u3092\u7121\u52b9\u306b\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-100\">\u30ab\u30b9\u30bf\u30e0\u8a3c\u660e\u66f8\u306e\u4f7f\u7528<\/h4>\n\n\n\n<p>\u793e\u5185\u30b7\u30b9\u30c6\u30e0\u3084\u81ea\u5df1\u7f72\u540d\u8a3c\u660e\u66f8\u3092\u4f7f\u7528\u3059\u308b\u74b0\u5883\u3067\u306f\u3001\u30ab\u30b9\u30bf\u30e0\u8a3c\u660e\u66f8\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; 'https:\/\/internal-api.company.com\/data',\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_SSL_VERIFYPEER =&gt; true,\n    CURLOPT_SSL_VERIFYHOST =&gt; 2,\n    \n    \/\/ \u30ab\u30b9\u30bf\u30e0\u8a3c\u660e\u66f8\u30d5\u30a1\u30a4\u30eb\u306e\u30d1\u30b9\n    CURLOPT_CAINFO =&gt; '\/path\/to\/custom-ca-bundle.crt',\n    \n    \/\/ \u307e\u305f\u306f\u8a3c\u660e\u66f8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\n    CURLOPT_CAPATH =&gt; '\/path\/to\/certificate\/directory'\n]);\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-101\">SSL\u8a3c\u660e\u66f8\u306e\u554f\u984c\u89e3\u6c7a\u65b9\u6cd5<\/h4>\n\n\n\n<p>SSL\u8a3c\u660e\u66f8\u306b\u95a2\u3059\u308b\u554f\u984c\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u3001\u8a3c\u660e\u66f8\u691c\u8a3c\u3092\u7121\u52b9\u306b\u3059\u308b\u524d\u306b\u4ee5\u4e0b\u306e\u5bfe\u7b56\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30b7\u30b9\u30c6\u30e0\u306e\u8a3c\u660e\u66f8\u30d0\u30f3\u30c9\u30eb\u3092\u66f4\u65b0\u3059\u308b<\/strong>\uff1a\u591a\u304f\u306e\u5834\u5408\u3001\u53e4\u3044\u8a3c\u660e\u66f8\u30d0\u30f3\u30c9\u30eb\u304c\u554f\u984c\u306e\u539f\u56e0\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>\u6700\u65b0\u306ecURL\u3068 OpenSSL \u3092\u4f7f\u7528\u3059\u308b<\/strong>\uff1a\u53e4\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306f\u65b0\u3057\u3044\u8a3c\u660e\u66f8\u3084\u6697\u53f7\u5316\u65b9\u5f0f\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u5fc5\u8981\u306a\u4e2d\u9593\u8a3c\u660e\u66f8\u304c\u63c3\u3063\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3059\u308b<\/strong>\uff1a\u8a3c\u660e\u66f8\u30c1\u30a7\u30fc\u30f3\u304c\u4e0d\u5b8c\u5168\u306a\u5834\u5408\u3001\u691c\u8a3c\u306b\u5931\u6557\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30ab\u30b9\u30bf\u30e0\u8a3c\u660e\u66f8\u30d0\u30f3\u30c9\u30eb\u3092\u4f7f\u7528\u3059\u308b<\/strong>\uff1a\u4e0a\u8a18\u306e\u3088\u3046\u306b\u3001\u7279\u5b9a\u306e\u8a3c\u660e\u66f8\u3092\u660e\u793a\u7684\u306b\u4fe1\u983c\u3059\u308b\u3088\u3046\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-102\">\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u306e\u30b5\u30cb\u30bf\u30a4\u30ba<\/h3>\n\n\n\n<p>API\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u9069\u5207\u306a\u30b5\u30cb\u30bf\u30a4\u30ba\u3092\u884c\u308f\u306a\u3044\u3068\u3055\u307e\u3056\u307e\u306a\u653b\u6483\u306e\u8106\u5f31\u6027\u304c\u751f\u3058\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-103\">URL\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u5b89\u5168\u306a\u51e6\u7406<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u60aa\u610f\u306e\u3042\u308b\u5165\u529b\u306e\u4f8b\n$userInput = \"malicious&lt;script&gt;alert('XSS')&lt;\/script&gt;&amp;param=value\";\n\n\/\/ \u5b89\u5168\u306aURL\u306e\u69cb\u7bc9\n$baseUrl = 'https:\/\/api.example.com\/search';\n\n\/\/ URL\u30a8\u30f3\u30b3\u30fc\u30c9: \u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u5185\u306e\u7279\u6b8a\u6587\u5b57\u3092\u30a8\u30f3\u30b3\u30fc\u30c9\n$safeParam = urlencode($userInput);\n$safeUrl = $baseUrl . '?q=' . $safeParam;\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $safeUrl,\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_SSL_VERIFYPEER =&gt; true,\n    CURLOPT_SSL_VERIFYHOST =&gt; 2\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u4f8b\u3067\u306f\u3001<code>urlencode()<\/code>\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u3092\u5b89\u5168\u306bURL\u30a8\u30f3\u30b3\u30fc\u30c9\u3057\u3066\u3044\u307e\u3059\u3002\u8907\u6570\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u3042\u308b\u5834\u5408\u306f\u3001<code>http_build_query()<\/code>\u95a2\u6570\u3092\u4f7f\u7528\u3059\u308b\u3068\u3088\u308a\u7c21\u5358\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$baseUrl = 'https:\/\/api.example.com\/search';\n$params = [\n    'q' =&gt; $userInput,\n    'limit' =&gt; 10,\n    'offset' =&gt; 0\n];\n\n\/\/ \u5168\u3066\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u5b89\u5168\u306b\u30a8\u30f3\u30b3\u30fc\u30c9\n$safeUrl = $baseUrl . '?' . http_build_query($params);\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-104\">POST\u30c7\u30fc\u30bf\u306e\u30b5\u30cb\u30bf\u30a4\u30ba<\/h4>\n\n\n\n<p>POST\u30c7\u30fc\u30bf\u3067\u3082\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u30b5\u30cb\u30bf\u30a4\u30ba\u304c\u91cd\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30e6\u30fc\u30b6\u30fc\u5165\u529b\n$username = $_POST['username'];\n$comment = $_POST['comment'];\n\n\/\/ API\u306b\u9001\u4fe1\u3059\u308b\u30c7\u30fc\u30bf\n$postData = [\n    'username' =&gt; $username,\n    'comment' =&gt; $comment\n];\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; 'https:\/\/api.example.com\/submit',\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_POST =&gt; true,\n    CURLOPT_POSTFIELDS =&gt; $postData  \/\/ cURL\u304c\u81ea\u52d5\u7684\u306b\u30a8\u30f3\u30b3\u30fc\u30c9\u3057\u3066\u304f\u308c\u308b\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<p><code>CURLOPT_POSTFIELDS<\/code>\u306bPOST\u30c7\u30fc\u30bf\u3092\u914d\u5217\u3067\u6e21\u3059\u3068\u3001cURL\u304c\u81ea\u52d5\u7684\u306b\u9069\u5207\u306a\u30a8\u30f3\u30b3\u30fc\u30c9\u3092\u884c\u3044\u307e\u3059\u3002JSON\u5f62\u5f0f\u3067\u9001\u4fe1\u3059\u308b\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ JSON\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5834\u5408\u306f\u3001\u4e8b\u524d\u306b\u30b5\u30cb\u30bf\u30a4\u30ba\n$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);\n$comment = filter_input(INPUT_POST, 'comment', FILTER_SANITIZE_STRING);\n\n$postData = [\n    'username' =&gt; $username,\n    'comment' =&gt; $comment\n];\n\n\/\/ JSON\u30a8\u30f3\u30b3\u30fc\u30c9\n$jsonData = json_encode($postData);\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; 'https:\/\/api.example.com\/submit',\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_POST =&gt; true,\n    CURLOPT_POSTFIELDS =&gt; $jsonData,\n    CURLOPT_HTTPHEADER =&gt; [\n        'Content-Type: application\/json',\n        'Content-Length: ' . strlen($jsonData)\n    ]\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-105\">\u7279\u6b8a\u306a\u30b1\u30fc\u30b9\uff1a\u52d5\u7684URL\u306e\u5b89\u5168\u306a\u69cb\u7bc9<\/h4>\n\n\n\n<p>RESTful API\u306a\u3069\u3067URL\u306e\u4e00\u90e8\u306b\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u3092\u542b\u3081\u308b\u5834\u5408\u306f\u3001\u7279\u306b\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30e6\u30fc\u30b6\u30fc\u5165\u529b\u304b\u3089ID\u3092\u53d6\u5f97\n$userId = $_GET['user_id'];\n\n\/\/ \u6570\u5024ID\u3092\u53b3\u683c\u306b\u691c\u8a3c\nif (!ctype_digit($userId)) {\n    die('\u7121\u52b9\u306a\u30e6\u30fc\u30b6\u30fcID');\n}\n\n\/\/ \u5b89\u5168\u306aURL\u306e\u69cb\u7bc9\n$url = \"https:\/\/api.example.com\/users\/{$userId}\/profile\";\n\n\/\/ \u4ee5\u964d\u306f\u901a\u5e38\u306ecURL\u51e6\u7406\n\/\/ ...\n?&gt;\n<\/pre>\n\n\n\n<p>\u6570\u5024\u4ee5\u5916\u306eID\u3084\u8907\u96d1\u306a\u30d1\u30b9\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u9069\u5207\u306a\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3068\u30b5\u30cb\u30bf\u30a4\u30ba\u3092\u884c\u3044\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-106\">\u6a5f\u5bc6\u60c5\u5831\u306e\u5b89\u5168\u306a\u53d6\u308a\u6271\u3044<\/h3>\n\n\n\n<p>API\u30ad\u30fc\u3001\u8a8d\u8a3c\u60c5\u5831\u3001\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u306a\u3069\u306e\u6a5f\u5bc6\u60c5\u5831\u306f\u3001\u9069\u5207\u306b\u4fdd\u8b77\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-107\">\u74b0\u5883\u5909\u6570\u306b\u3088\u308b\u6a5f\u5bc6\u60c5\u5831\u306e\u7ba1\u7406<\/h4>\n\n\n\n<p>\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u5185\u306b\u76f4\u63a5\u6a5f\u5bc6\u60c5\u5831\u3092\u8a18\u8ff0\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u74b0\u5883\u5909\u6570\u304b\u3089API\u30ad\u30fc\u3092\u53d6\u5f97\n$apiKey = getenv('API_KEY');\n\nif (!$apiKey) {\n    die('API\u30ad\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093');\n}\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; 'https:\/\/api.example.com\/data',\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_HTTPHEADER =&gt; [\n        \"Authorization: Bearer {$apiKey}\"\n    ]\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-108\">\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u3088\u308b\u7ba1\u7406<\/h4>\n\n\n\n<p>\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3067\u304d\u306a\u3044\u5834\u5408\u306f\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u3082\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u516c\u958b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u5916\u306b\u7f6e\u304f\n$config = include('\/path\/outside\/webroot\/config.php');\n\n$apiKey = $config['api_key'];\n\n\/\/ \u4ee5\u964d\u306f\u901a\u5e38\u306ecURL\u51e6\u7406\n\/\/ ...\n?&gt;\n<\/pre>\n\n\n\n<p>\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\uff08config.php\uff09\u306e\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nreturn [\n    'api_key' =&gt; 'your_secret_api_key',\n    'api_secret' =&gt; 'your_secret_api_secret',\n    'endpoint' =&gt; 'https:\/\/api.example.com'\n];\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306fWeb\u30b5\u30fc\u30d0\u30fc\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30eb\u30fc\u30c8\u5916\u306b\u914d\u7f6e\u3057\u3001\u9069\u5207\u306a\u30d5\u30a1\u30a4\u30eb\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-109\">\u3088\u308a\u9ad8\u5ea6\u306a\u6a5f\u5bc6\u60c5\u5831\u7ba1\u7406<\/h4>\n\n\n\n<p>\u672c\u756a\u74b0\u5883\u3084\u5927\u898f\u6a21\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u3088\u308a\u9ad8\u5ea6\u306a\u6a5f\u5bc6\u60c5\u5831\u7ba1\u7406\u306e\u65b9\u6cd5\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u7ba1\u7406\u30b5\u30fc\u30d3\u30b9<\/strong>\uff1aAWS Secrets Manager\u3001HashiCorp Vault\u3001Google Cloud Secret Manager\u306a\u3069<\/li>\n\n\n\n<li><strong>\u74b0\u5883\u56fa\u6709\u306e\u8a2d\u5b9a\u7ba1\u7406<\/strong>\uff1adotenv\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4f7f\u7528<\/li>\n\n\n\n<li><strong>\u6697\u53f7\u5316\u3055\u308c\u305f\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb<\/strong>\uff1a\u8a2d\u5b9a\u3092\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3059\u308b\u5834\u5408\u306f\u6697\u53f7\u5316\u3092\u691c\u8a0e<\/li>\n<\/ol>\n\n\n\n<p>dotenv\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3057\u305f\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ Composer\u7d4c\u7531\u3067dotenv\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\nrequire 'vendor\/autoload.php';\n\n\/\/ .env\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u74b0\u5883\u5909\u6570\u3092\u8aad\u307f\u8fbc\u307f\n$dotenv = Dotenv\\Dotenv::createImmutable(__DIR__);\n$dotenv-&gt;load();\n\n$apiKey = $_ENV['API_KEY'];\n$apiSecret = $_ENV['API_SECRET'];\n\n\/\/ \u4ee5\u964d\u306f\u901a\u5e38\u306ecURL\u51e6\u7406\n\/\/ ...\n?&gt;\n<\/pre>\n\n\n\n<p><code>.env<\/code>\u30d5\u30a1\u30a4\u30eb\u306e\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">API_KEY=your_secret_api_key\nAPI_SECRET=your_secret_api_secret\nAPI_ENDPOINT=https:\/\/api.example.com\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\uff08Git\u7b49\uff09\u304b\u3089\u9664\u5916\u3057\u3001<code>.gitignore<\/code>\u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-110\">\u6a5f\u5bc6\u60c5\u5831\u306e\u30ed\u30b0\u8a18\u9332\u3068\u8868\u793a\u306e\u9632\u6b62<\/h4>\n\n\n\n<p>\u30c7\u30d0\u30c3\u30b0\u3084\u30a8\u30e9\u30fc\u30ed\u30b0\u306b\u6a5f\u5bc6\u60c5\u5831\u304c\u6f0f\u308c\u306a\u3044\u3088\u3046\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\ntry {\n    \/\/ API\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5b9f\u884c\n    $response = makeApiRequest($url, $apiKey);\n} catch (Exception $e) {\n    \/\/ \u30a8\u30e9\u30fc\u30ed\u30b0\u3067\u306f\u6a5f\u5bc6\u60c5\u5831\u3092\u30de\u30b9\u30af\n    $maskedApiKey = substr($apiKey, 0, 4) . '***' . substr($apiKey, -4);\n    error_log(\"API Error with key {$maskedApiKey}: \" . $e-&gt;getMessage());\n    \n    \/\/ \u30e6\u30fc\u30b6\u30fc\u306b\u8868\u793a\u3059\u308b\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306b\u306f\u6a5f\u5bc6\u60c5\u5831\u3092\u542b\u3081\u306a\u3044\n    echo \"API\u3068\u306e\u901a\u4fe1\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u8a73\u7d30\u306f\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\";\n}\n?&gt;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-111\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u307e\u3068\u3081<\/h3>\n\n\n\n<p>PHP\u306ecURL\u3092\u4f7f\u7528\u3059\u308b\u969b\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u307e\u3068\u3081\u308b\u3068\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5e38\u306bSSL\/TLS\u8a3c\u660e\u66f8\u691c\u8a3c\u3092\u6709\u52b9\u306b\u3059\u308b<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>CURLOPT_SSL_VERIFYPEER = true<\/code><\/li>\n\n\n\n<li><code>CURLOPT_SSL_VERIFYHOST = 2<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u6700\u65b0\u306eTLS\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>CURLOPT_SSLVERSION = CURL_SSLVERSION_TLSv1_2<\/code>\uff08\u307e\u305f\u306fTLSv1.3\uff09<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u5168\u3066\u306e\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u3092\u9069\u5207\u306b\u30b5\u30cb\u30bf\u30a4\u30ba\u3059\u308b<\/strong>\n<ul class=\"wp-block-list\">\n<li>URL\u30d1\u30e9\u30e1\u30fc\u30bf: <code>urlencode()<\/code> \u307e\u305f\u306f <code>http_build_query()<\/code><\/li>\n\n\n\n<li>POST\u30c7\u30fc\u30bf: \u914d\u5217\u3067\u6e21\u3059\u304b\u3001\u9069\u5207\u306a\u30a8\u30f3\u30b3\u30fc\u30c9\u95a2\u6570\u3092\u4f7f\u7528<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u6a5f\u5bc6\u60c5\u5831\u306e\u5b89\u5168\u306a\u7ba1\u7406<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u5185\u306b\u76f4\u63a5\u8a18\u8ff0\u3057\u306a\u3044<\/li>\n\n\n\n<li>\u74b0\u5883\u5909\u6570\u3084\u5b89\u5168\u306a\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528<\/li>\n\n\n\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u306b\u30b3\u30df\u30c3\u30c8\u3057\u306a\u3044<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30ed\u30ae\u30f3\u30b0<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30a8\u30e9\u30fc\u3092\u9069\u5207\u306b\u8a18\u9332\u3059\u308b<\/li>\n\n\n\n<li>\u6a5f\u5bc6\u60c5\u5831\u304c\u30ed\u30b0\u3084\u51fa\u529b\u306b\u542b\u307e\u308c\u306a\u3044\u3088\u3046\u306b\u3059\u308b<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u6700\u5c0f\u6a29\u9650\u306e\u539f\u5247<\/strong>\n<ul class=\"wp-block-list\">\n<li>API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u306f\u5fc5\u8981\u6700\u4f4e\u9650\u306e\u6a29\u9650\u306e\u307f\u3092\u4e0e\u3048\u308b<\/li>\n\n\n\n<li>\u53ef\u80fd\u3067\u3042\u308c\u3070\u8aad\u307f\u53d6\u308a\u5c02\u7528\u306eAPI\u30ad\u30fc\u3092\u4f7f\u7528\u3059\u308b<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5bfe\u7b56\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001PHP\u306ecURL\u3092\u4f7f\u7528\u3057\u305fAPI\u9023\u643a\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ec\u30d9\u30eb\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306f\u7d99\u7d9a\u7684\u306a\u30d7\u30ed\u30bb\u30b9\u3067\u3042\u308a\u3001\u5e38\u306b\u6700\u65b0\u306e\u8105\u5a01\u3068\u5bfe\u7b56\u306b\u3064\u3044\u3066\u60c5\u5831\u3092\u53ce\u96c6\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u66f4\u65b0\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-112\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af7\uff1a\u30de\u30eb\u30c1\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u4e26\u5217\u51e6\u7406<\/h2>\n\n\n\n<p>API\u3084Web\u30b5\u30fc\u30d3\u30b9\u3068\u306e\u9023\u643a\u3067\u306f\u3001\u8907\u6570\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u52b9\u7387\u7684\u306b\u51e6\u7406\u3059\u308b\u3053\u3068\u304c\u5fc5\u8981\u306b\u306a\u308b\u5834\u9762\u304c\u591a\u304f\u3042\u308a\u307e\u3059\u3002PHP\u306ecURL\u3067\u306f\u3001<code>curl_multi_*<\/code>\u95a2\u6570\u7fa4\u3092\u4f7f\u7528\u3057\u3066\u8907\u6570\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4e26\u5217\u306b\u51e6\u7406\u3059\u308b\u6a5f\u80fd\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001\u30de\u30eb\u30c1\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5b9f\u88c5\u65b9\u6cd5\u3068\u3001\u30ea\u30bd\u30fc\u30b9\u52b9\u7387\u306e\u826f\u3044\u4e26\u5217\u51e6\u7406\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-113\">curl_multi_init()\u3092\u4f7f\u3063\u305f\u4e26\u5217\u30ea\u30af\u30a8\u30b9\u30c8<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-114\">\u57fa\u672c\u7684\u306a\u4e26\u5217\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5b9f\u88c5<\/h4>\n\n\n\n<p><code>curl_multi_*<\/code>\u95a2\u6570\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u8907\u6570\u306ecURL\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u540c\u6642\u306b\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u7279\u306b\u591a\u6570\u306eAPI\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5834\u5408\u3084\u3001\u76f8\u4e92\u306b\u4f9d\u5b58\u3057\u306a\u3044\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3059\u308b\u5834\u5408\u306b\u5927\u5e45\u306a\u6642\u9593\u77ed\u7e2e\u304c\u53ef\u80fd\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u8907\u6570\u306eURL\u306b\u5bfe\u3057\u3066\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\n$urls = [\n    'https:\/\/api.example.com\/users',\n    'https:\/\/api.example.com\/products',\n    'https:\/\/api.example.com\/orders',\n    'https:\/\/api.example.com\/categories'\n];\n\n\/\/ \u51e6\u7406\u6642\u9593\u8a08\u6e2c\u958b\u59cb\n$startTime = microtime(true);\n\n\/\/ \u30de\u30eb\u30c1\u30cf\u30f3\u30c9\u30eb\u306e\u521d\u671f\u5316\n$multiHandle = curl_multi_init();\n\n\/\/ \u500b\u5225\u306ecURL\u30cf\u30f3\u30c9\u30eb\u3092\u6e96\u5099\u3057\u3001\u30de\u30eb\u30c1\u30cf\u30f3\u30c9\u30eb\u306b\u8ffd\u52a0\n$curlHandles = [];\nforeach ($urls as $i =&gt; $url) {\n    $curlHandles[$i] = curl_init();\n    curl_setopt_array($curlHandles[$i], [\n        CURLOPT_URL =&gt; $url,\n        CURLOPT_RETURNTRANSFER =&gt; true,\n        CURLOPT_TIMEOUT =&gt; 10,\n        CURLOPT_SSL_VERIFYPEER =&gt; true,\n        CURLOPT_SSL_VERIFYHOST =&gt; 2\n    ]);\n    \n    \/\/ \u30cf\u30f3\u30c9\u30eb\u3092\u30de\u30eb\u30c1\u30cf\u30f3\u30c9\u30eb\u306b\u8ffd\u52a0\n    curl_multi_add_handle($multiHandle, $curlHandles[$i]);\n}\n\n\/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5b9f\u884c\n$running = null;\ndo {\n    \/\/ curl_multi_exec\u3092\u547c\u3073\u51fa\u3057\u3066\u51e6\u7406\u3092\u9032\u3081\u308b\n    curl_multi_exec($multiHandle, $running);\n    \n    \/\/ \u63a5\u7d9a\u72b6\u614b\u306e\u5909\u5316\u3092\u5f85\u6a5f\uff08CPU\u4f7f\u7528\u7387\u3092\u4e0b\u3052\u308b\uff09\n    curl_multi_select($multiHandle);\n    \n} while ($running &gt; 0);\n\n\/\/ \u7d50\u679c\u306e\u53d6\u5f97\u3068\u51e6\u7406\n$responses = [];\nforeach ($curlHandles as $i =&gt; $handle) {\n    \/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u306e\u7d50\u679c\u3092\u53d6\u5f97\n    $responses[$i] = curl_multi_getcontent($handle);\n    \n    \/\/ HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u3092\u53d6\u5f97\n    $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);\n    \n    echo \"URL: {$urls[$i]}\\n\";\n    echo \"HTTP Status: {$httpCode}\\n\";\n    echo \"Response Size: \" . strlen($responses[$i]) . \" bytes\\n\\n\";\n    \n    \/\/ \u30cf\u30f3\u30c9\u30eb\u3092\u30de\u30eb\u30c1\u30cf\u30f3\u30c9\u30eb\u304b\u3089\u524a\u9664\n    curl_multi_remove_handle($multiHandle, $handle);\n    \n    \/\/ \u500b\u5225\u306e\u30cf\u30f3\u30c9\u30eb\u3092\u9589\u3058\u308b\n    curl_close($handle);\n}\n\n\/\/ \u30de\u30eb\u30c1\u30cf\u30f3\u30c9\u30eb\u3092\u9589\u3058\u308b\ncurl_multi_close($multiHandle);\n\n\/\/ \u51e6\u7406\u6642\u9593\u8a08\u6e2c\u7d42\u4e86\n$endTime = microtime(true);\n$executionTime = $endTime - $startTime;\n\necho \"\u5168\u30ea\u30af\u30a8\u30b9\u30c8\u5b8c\u4e86: \u51e6\u7406\u6642\u9593 {$executionTime} \u79d2\\n\";\n\n\/\/ \u5fdc\u7b54\u30c7\u30fc\u30bf\u306e\u51e6\u7406\nforeach ($responses as $i =&gt; $response) {\n    $data = json_decode($response, true);\n    \/\/ \u30c7\u30fc\u30bf\u306e\u51e6\u7406...\n}\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u8907\u6570\u306eURL\u306b\u5bfe\u3057\u3066\u4e26\u5217\u306b\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3057\u3001\u5168\u3066\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u52b9\u7387\u7684\u306b\u53d6\u5f97\u3057\u3066\u3044\u307e\u3059\u3002<code>curl_multi_exec()<\/code>\u95a2\u6570\u306f\u5404\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u72b6\u614b\u3092\u66f4\u65b0\u3057\u3001<code>curl_multi_select()<\/code>\u95a2\u6570\u306f\u63a5\u7d9a\u72b6\u614b\u306e\u5909\u5316\u3092\u5f85\u6a5f\u3059\u308b\u3053\u3068\u3067CPU\u4f7f\u7528\u7387\u3092\u6291\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-115\">\u30de\u30eb\u30c1\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5229\u70b9<\/h4>\n\n\n\n<p>\u4e26\u5217\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u4e3b\u306a\u5229\u70b9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5927\u5e45\u306a\u6642\u9593\u77ed\u7e2e<\/strong>\uff1a\u8907\u6570\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u540c\u6642\u306b\u9001\u4fe1\u3059\u308b\u3053\u3068\u3067\u3001\u7dcf\u51e6\u7406\u6642\u9593\u304c\u77ed\u7e2e\u3055\u308c\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u5404\u30ea\u30af\u30a8\u30b9\u30c8\u304c1\u79d2\u304b\u304b\u308b\u5834\u5408\u300110\u500b\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9806\u6b21\u9001\u4fe1\u3059\u308b\u306810\u79d2\u304b\u304b\u308a\u307e\u3059\u304c\u3001\u4e26\u5217\u51e6\u7406\u3067\u306f\u7d041\u301c2\u79d2\u3067\u5b8c\u4e86\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u975e\u540c\u671f\u51e6\u7406<\/strong>\uff1a\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5b8c\u4e86\u3092\u5f85\u3064\u9593\u306b\u4ed6\u306e\u51e6\u7406\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3<\/strong>\uff1a\u591a\u6570\u306eAPI\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u52b9\u7387\u7684\u306b\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-116\">\u4e26\u5217vs.\u76f4\u5217\u51e6\u7406\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6bd4\u8f03<\/h4>\n\n\n\n<p>\u4ee5\u4e0b\u306f\u3001\u4e26\u5217\u51e6\u7406\u3068\u76f4\u5217\u51e6\u7406\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u6bd4\u8f03\u3059\u308b\u30b3\u30fc\u30c9\u4f8b\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction fetchUrlsSequential($urls) {\n    $startTime = microtime(true);\n    $responses = [];\n    \n    foreach ($urls as $i =&gt; $url) {\n        $ch = curl_init();\n        curl_setopt_array($ch, [\n            CURLOPT_URL =&gt; $url,\n            CURLOPT_RETURNTRANSFER =&gt; true,\n            CURLOPT_TIMEOUT =&gt; 10\n        ]);\n        \n        $responses[$i] = curl_exec($ch);\n        curl_close($ch);\n    }\n    \n    $endTime = microtime(true);\n    return [\n        'responses' =&gt; $responses,\n        'time' =&gt; $endTime - $startTime\n    ];\n}\n\nfunction fetchUrlsParallel($urls) {\n    $startTime = microtime(true);\n    $responses = [];\n    \n    $mh = curl_multi_init();\n    $handles = [];\n    \n    foreach ($urls as $i =&gt; $url) {\n        $handles[$i] = curl_init();\n        curl_setopt_array($handles[$i], [\n            CURLOPT_URL =&gt; $url,\n            CURLOPT_RETURNTRANSFER =&gt; true,\n            CURLOPT_TIMEOUT =&gt; 10\n        ]);\n        \n        curl_multi_add_handle($mh, $handles[$i]);\n    }\n    \n    $running = null;\n    do {\n        curl_multi_exec($mh, $running);\n        curl_multi_select($mh);\n    } while ($running &gt; 0);\n    \n    foreach ($handles as $i =&gt; $handle) {\n        $responses[$i] = curl_multi_getcontent($handle);\n        curl_multi_remove_handle($mh, $handle);\n        curl_close($handle);\n    }\n    \n    curl_multi_close($mh);\n    \n    $endTime = microtime(true);\n    return [\n        'responses' =&gt; $responses,\n        'time' =&gt; $endTime - $startTime\n    ];\n}\n\n\/\/ \u30c6\u30b9\u30c8\u7528\u306eURL\n$urls = [\n    'https:\/\/api.example.com\/endpoint1',\n    'https:\/\/api.example.com\/endpoint2',\n    'https:\/\/api.example.com\/endpoint3',\n    'https:\/\/api.example.com\/endpoint4',\n    'https:\/\/api.example.com\/endpoint5'\n];\n\n\/\/ \u76f4\u5217\u51e6\u7406\n$sequential = fetchUrlsSequential($urls);\necho \"\u76f4\u5217\u51e6\u7406\u6642\u9593: {$sequential['time']} \u79d2\\n\";\n\n\/\/ \u4e26\u5217\u51e6\u7406\n$parallel = fetchUrlsParallel($urls);\necho \"\u4e26\u5217\u51e6\u7406\u6642\u9593: {$parallel['time']} \u79d2\\n\";\n\n\/\/ \u9ad8\u901f\u5316\u7387\n$speedup = $sequential['time'] \/ $parallel['time'];\necho \"\u9ad8\u901f\u5316\u7387: {$speedup}\u500d\\n\";\n?&gt;\n<\/pre>\n\n\n\n<p>\u5b9f\u969b\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5411\u4e0a\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u6570\u3001\u30b5\u30fc\u30d0\u30fc\u306e\u5fdc\u7b54\u6642\u9593\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u72b6\u6cc1\u306a\u3069\u306b\u3088\u3063\u3066\u7570\u306a\u308a\u307e\u3059\u304c\u3001\u901a\u5e38\u306f2\u301c5\u500d\u306e\u9ad8\u901f\u5316\u304c\u671f\u5f85\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-117\">\u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\u65b9\u6cd5<\/h3>\n\n\n\n<p>PHP\u306f\u57fa\u672c\u7684\u306b\u540c\u671f\u51e6\u7406\u8a00\u8a9e\u3067\u3059\u304c\u3001<code>curl_multi_*<\/code>\u95a2\u6570\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u9650\u5b9a\u7684\u306a\u975e\u540c\u671f\u51e6\u7406\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u3088\u308a\u9ad8\u5ea6\u306a\u975e\u540c\u671f\u51e6\u7406\u3092\u884c\u3044\u305f\u3044\u5834\u5408\u306f\u3001\u30a4\u30d9\u30f3\u30c8\u30eb\u30fc\u30d7\u306e\u6982\u5ff5\u3092\u53d6\u308a\u5165\u308c\u308b\u3068\u52b9\u679c\u7684\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-118\">\u30a4\u30d9\u30f3\u30c8\u30eb\u30fc\u30d7\u3092\u4f7f\u3063\u305f\u975e\u540c\u671f\u51e6\u7406<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u975e\u540c\u671f\u30ea\u30af\u30a8\u30b9\u30c8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u30af\u30e9\u30b9\nclass AsyncRequestManager {\n    private $multiHandle;\n    private $handles = [];\n    private $urls = [];\n    private $responses = [];\n    private $callbacks = [];\n    private $running = 0;\n    \n    public function __construct() {\n        $this-&gt;multiHandle = curl_multi_init();\n    }\n    \n    public function addRequest($url, callable $callback) {\n        $id = count($this-&gt;handles);\n        \n        \/\/ \u65b0\u3057\u3044cURL\u30cf\u30f3\u30c9\u30eb\u3092\u4f5c\u6210\n        $handle = curl_init();\n        curl_setopt_array($handle, [\n            CURLOPT_URL =&gt; $url,\n            CURLOPT_RETURNTRANSFER =&gt; true,\n            CURLOPT_TIMEOUT =&gt; 10,\n            CURLOPT_SSL_VERIFYPEER =&gt; true,\n            CURLOPT_SSL_VERIFYHOST =&gt; 2\n        ]);\n        \n        \/\/ \u30de\u30eb\u30c1\u30cf\u30f3\u30c9\u30eb\u306b\u8ffd\u52a0\n        curl_multi_add_handle($this-&gt;multiHandle, $handle);\n        \n        \/\/ \u60c5\u5831\u3092\u4fdd\u5b58\n        $this-&gt;handles[$id] = $handle;\n        $this-&gt;urls[$id] = $url;\n        $this-&gt;callbacks[$id] = $callback;\n        \n        $this-&gt;running++;\n        \n        return $id;\n    }\n    \n    public function processRequests() {\n        \/\/ \u975e\u540c\u671f\u51e6\u7406\u306e\u30e1\u30a4\u30f3\u30eb\u30fc\u30d7\n        do {\n            \/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u306e\u72b6\u614b\u3092\u66f4\u65b0\n            $status = curl_multi_exec($this-&gt;multiHandle, $stillRunning);\n            \n            \/\/ \u5b8c\u4e86\u3057\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\n            while ($info = curl_multi_info_read($this-&gt;multiHandle)) {\n                $handle = $info['handle'];\n                $id = $this-&gt;findHandleId($handle);\n                \n                if ($id !== false) {\n                    $response = curl_multi_getcontent($handle);\n                    $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);\n                    \n                    \/\/ \u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u3092\u547c\u3073\u51fa\u3057\n                    call_user_func($this-&gt;callbacks[$id], $response, $httpCode, $this-&gt;urls[$id]);\n                    \n                    \/\/ \u30cf\u30f3\u30c9\u30eb\u3092\u524a\u9664\n                    curl_multi_remove_handle($this-&gt;multiHandle, $handle);\n                    curl_close($handle);\n                    \n                    \/\/ \u5185\u90e8\u72b6\u614b\u3092\u66f4\u65b0\n                    unset($this-&gt;handles[$id]);\n                    $this-&gt;running--;\n                }\n            }\n            \n            \/\/ \u63a5\u7d9a\u72b6\u614b\u306e\u5909\u5316\u3092\u5f85\u6a5f\uff08CPU\u306e\u4f7f\u7528\u7387\u3092\u4e0b\u3052\u308b\uff09\n            if ($stillRunning) {\n                curl_multi_select($this-&gt;multiHandle, 0.1);\n            }\n            \n        } while ($status === CURLM_CALL_MULTI_PERFORM || $stillRunning);\n    }\n    \n    private function findHandleId($handle) {\n        foreach ($this-&gt;handles as $id =&gt; $h) {\n            if ($h === $handle) {\n                return $id;\n            }\n        }\n        return false;\n    }\n    \n    public function __destruct() {\n        \/\/ \u6b8b\u3063\u3066\u3044\u308b\u30cf\u30f3\u30c9\u30eb\u3092\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\n        foreach ($this-&gt;handles as $handle) {\n            curl_multi_remove_handle($this-&gt;multiHandle, $handle);\n            curl_close($handle);\n        }\n        \n        \/\/ \u30de\u30eb\u30c1\u30cf\u30f3\u30c9\u30eb\u3092\u9589\u3058\u308b\n        curl_multi_close($this-&gt;multiHandle);\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$manager = new AsyncRequestManager();\n\n\/\/ \u8907\u6570\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u8ffd\u52a0\n$manager-&gt;addRequest('https:\/\/api.example.com\/users', function($response, $httpCode, $url) {\n    echo \"User API\u30ec\u30b9\u30dd\u30f3\u30b9: HTTP $httpCode\\n\";\n    $data = json_decode($response, true);\n    \/\/ \u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u306e\u51e6\u7406...\n});\n\n$manager-&gt;addRequest('https:\/\/api.example.com\/products', function($response, $httpCode, $url) {\n    echo \"Product API\u30ec\u30b9\u30dd\u30f3\u30b9: HTTP $httpCode\\n\";\n    $data = json_decode($response, true);\n    \/\/ \u5546\u54c1\u30c7\u30fc\u30bf\u306e\u51e6\u7406...\n});\n\n\/\/ \u3059\u3079\u3066\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\n$manager-&gt;processRequests();\n\necho \"\u3059\u3079\u3066\u306e\u975e\u540c\u671f\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002\\n\";\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30af\u30e9\u30b9\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3054\u3068\u306b\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u3092\u6307\u5b9a\u3067\u304d\u308b\u305f\u3081\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u5230\u7740\u6b21\u7b2c\u3001\u500b\u5225\u306b\u51e6\u7406\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001PHP\u3067\u7591\u4f3c\u7684\u306a\u975e\u540c\u671f\u51e6\u7406\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-119\">\u30ea\u30bd\u30fc\u30b9\u6d88\u8cbb\u3092\u6291\u3048\u305f\u5927\u91cf\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u51e6\u7406<\/h3>\n\n\n\n<p>\u591a\u6570\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3001\u5168\u3066\u3092\u4e00\u5ea6\u306b\u4e26\u5217\u5b9f\u884c\u3059\u308b\u3068\u30b5\u30fc\u30d0\u30fc\u30ea\u30bd\u30fc\u30b9\u3092\u5927\u91cf\u306b\u6d88\u8cbb\u3057\u305f\u308a\u3001\u63a5\u7d9a\u5236\u9650\u306b\u9054\u3057\u305f\u308a\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u3088\u3046\u306a\u5834\u5408\u3001\u30d0\u30c3\u30c1\u51e6\u7406\u3092\u4f7f\u7528\u3057\u3066\u52b9\u7387\u7684\u306b\u51e6\u7406\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-120\">\u30d0\u30c3\u30c1\u51e6\u7406\u306b\u3088\u308b\u5927\u91cf\u30ea\u30af\u30a8\u30b9\u30c8\u51e6\u7406<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction processBatchRequests($urls, $batchSize = 10, $options = []) {\n    $totalUrls = count($urls);\n    $batches = ceil($totalUrls \/ $batchSize);\n    $results = [];\n    \n    echo \"\u5408\u8a08 {$totalUrls} URL\u3092 {$batchSize} \u30b5\u30a4\u30ba\u306e\u30d0\u30c3\u30c1\u3067\u51e6\u7406\uff08\u5408\u8a08 {$batches} \u30d0\u30c3\u30c1\uff09\\n\";\n    \n    for ($batch = 0; $batch &lt; $batches; $batch++) {\n        $start = $batch * $batchSize;\n        $end = min(($batch + 1) * $batchSize, $totalUrls);\n        $currentBatch = array_slice($urls, $start, $end - $start);\n        \n        echo \"\u30d0\u30c3\u30c1 \" . ($batch + 1) . \"\/\" . $batches . \" \u51e6\u7406\u4e2d\uff08{$start}\uff5e\" . ($end-1) . \"\uff09\\n\";\n        \n        \/\/ \u30de\u30eb\u30c1\u30cf\u30f3\u30c9\u30eb\u306e\u521d\u671f\u5316\n        $mh = curl_multi_init();\n        $handles = [];\n        \n        \/\/ \u73fe\u5728\u306e\u30d0\u30c3\u30c1\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u8a2d\u5b9a\n        foreach ($currentBatch as $i =&gt; $url) {\n            $index = $start + $i;\n            $handles[$index] = curl_init();\n            \n            \/\/ \u30c7\u30d5\u30a9\u30eb\u30c8\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u30de\u30fc\u30b8\n            $defaultOptions = [\n                CURLOPT_URL =&gt; $url,\n                CURLOPT_RETURNTRANSFER =&gt; true,\n                CURLOPT_TIMEOUT =&gt; 30,\n                CURLOPT_SSL_VERIFYPEER =&gt; true,\n                CURLOPT_SSL_VERIFYHOST =&gt; 2\n            ];\n            \n            curl_setopt_array($handles[$index], $defaultOptions + $options);\n            curl_multi_add_handle($mh, $handles[$index]);\n        }\n        \n        \/\/ \u30d0\u30c3\u30c1\u306e\u5b9f\u884c\n        $running = null;\n        do {\n            curl_multi_exec($mh, $running);\n            curl_multi_select($mh);\n        } while ($running &gt; 0);\n        \n        \/\/ \u7d50\u679c\u306e\u53d6\u5f97\n        foreach ($handles as $index =&gt; $handle) {\n            $results[$index] = [\n                'url' =&gt; $urls[$index],\n                'content' =&gt; curl_multi_getcontent($handle),\n                'http_code' =&gt; curl_getinfo($handle, CURLINFO_HTTP_CODE),\n                'error' =&gt; curl_errno($handle) ? curl_error($handle) : null\n            ];\n            \n            curl_multi_remove_handle($mh, $handle);\n            curl_close($handle);\n        }\n        \n        curl_multi_close($mh);\n        \n        \/\/ \u30d0\u30c3\u30c1\u9593\u3067\u30b5\u30fc\u30d0\u30fc\u8ca0\u8377\u3092\u8efd\u6e1b\u3059\u308b\u305f\u3081\u306e\u77ed\u3044\u9045\u5ef6\n        if ($batch &lt; $batches - 1) {\n            echo \"\u6b21\u306e\u30d0\u30c3\u30c1\u306e\u524d\u306b1\u79d2\u5f85\u6a5f...\\n\";\n            sleep(1);\n        }\n    }\n    \n    return $results;\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$urlList = [];\nfor ($i = 1; $i &lt;= 100; $i++) {\n    $urlList[] = \"https:\/\/api.example.com\/items\/{$i}\";\n}\n\n$startTime = microtime(true);\n\n\/\/ \u30d0\u30c3\u30c1\u30b5\u30a4\u30ba10\u3067\u51e6\u7406\uff08\u4e00\u5ea6\u306b10\u30ea\u30af\u30a8\u30b9\u30c8\u307e\u3067\uff09\n$results = processBatchRequests($urlList, 10, [\n    CURLOPT_TIMEOUT =&gt; 10,\n    CURLOPT_USERAGENT =&gt; 'My Batch Processor\/1.0'\n]);\n\n$endTime = microtime(true);\n$totalTime = $endTime - $startTime;\n\necho \"\u5168 \" . count($urlList) . \" \u30ea\u30af\u30a8\u30b9\u30c8\u306e\u51e6\u7406\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002\\n\";\necho \"\u5408\u8a08\u51e6\u7406\u6642\u9593: {$totalTime} \u79d2\\n\";\n\n\/\/ \u6210\u529f\u30fb\u5931\u6557\u306e\u96c6\u8a08\n$success = 0;\n$failed = 0;\n\nforeach ($results as $result) {\n    if ($result['http_code'] &gt;= 200 &amp;&amp; $result['http_code'] &lt; 300) {\n        $success++;\n    } else {\n        $failed++;\n    }\n}\n\necho \"\u6210\u529f: {$success}, \u5931\u6557: {$failed}\\n\";\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u306f\u3001\u5927\u91cf\u306eURL\u3092\u6307\u5b9a\u3057\u305f\u30d0\u30c3\u30c1\u30b5\u30a4\u30ba\u3067\u5206\u5272\u3057\u3066\u51e6\u7406\u3057\u307e\u3059\u3002\u30d0\u30c3\u30c1\u51e6\u7406\u306b\u306f\u4ee5\u4e0b\u306e\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30b5\u30fc\u30d0\u30fc\u30ea\u30bd\u30fc\u30b9\u306e\u5236\u5fa1<\/strong>\uff1a\u4e00\u5ea6\u306b\u51e6\u7406\u3059\u308b\u30ea\u30af\u30a8\u30b9\u30c8\u6570\u3092\u5236\u9650\u3059\u308b\u3053\u3068\u3067\u3001\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3084CPU\u8ca0\u8377\u3092\u7ba1\u7406\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u63a5\u7d9a\u5236\u9650\u306e\u56de\u907f<\/strong>\uff1a\u591a\u304f\u306eAPI\u30b5\u30fc\u30d0\u30fc\u306f\u540c\u6642\u63a5\u7d9a\u6570\u3092\u5236\u9650\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30d0\u30c3\u30c1\u51e6\u7406\u306b\u3088\u3063\u3066\u3053\u306e\u5236\u9650\u3092\u8d85\u3048\u306a\u3044\u3088\u3046\u306b\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30a8\u30e9\u30fc\u7ba1\u7406\u306e\u5411\u4e0a<\/strong>\uff1a\u30d0\u30c3\u30c1\u3054\u3068\u306b\u51e6\u7406\u3059\u308b\u3053\u3068\u3067\u3001\u7279\u5b9a\u306e\u30d0\u30c3\u30c1\u3067\u554f\u984c\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u3067\u3082\u3001\u4ed6\u306e\u30d0\u30c3\u30c1\u306f\u6b63\u5e38\u306b\u51e6\u7406\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-121\">\u30ea\u30bd\u30fc\u30b9\u4f7f\u7528\u91cf\u306e\u6700\u9069\u5316\u306e\u305f\u3081\u306e\u30d2\u30f3\u30c8<\/h4>\n\n\n\n<p>\u5927\u91cf\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3059\u308b\u969b\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u9069\u5207\u306a\u30d0\u30c3\u30c1\u30b5\u30a4\u30ba\u306e\u9078\u629e<\/strong>\uff1a\u30b7\u30b9\u30c6\u30e0\u306e\u30ea\u30bd\u30fc\u30b9\u3068API\u306e\u5236\u9650\u306b\u57fa\u3065\u3044\u3066\u30d0\u30c3\u30c1\u30b5\u30a4\u30ba\u3092\u8abf\u6574\u3057\u307e\u3059\u3002\u901a\u5e38\u30015\u301c20\u306e\u7bc4\u56f2\u304c\u9069\u5207\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30d0\u30c3\u30c1\u9593\u306e\u9045\u5ef6\u306e\u5c0e\u5165<\/strong>\uff1a\u30ec\u30fc\u30c8\u5236\u9650\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u3001\u30d0\u30c3\u30c1\u9593\u306b\u77ed\u3044\u9045\u5ef6\uff08\u4f8b\uff1a1\u79d2\uff09\u3092\u5165\u308c\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a\u306e\u6700\u9069\u5316<\/strong>\uff1a\u30ea\u30af\u30a8\u30b9\u30c8\u3054\u3068\u306b\u9069\u5207\u306a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u5024\u3092\u8a2d\u5b9a\u3057\u3001\u4e00\u90e8\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u9045\u5ef6\u3057\u3066\u3082\u5168\u4f53\u306e\u51e6\u7406\u304c\u505c\u6ede\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30ea\u30c8\u30e9\u30a4\u6226\u7565<\/strong>\uff1a\u4e00\u6642\u7684\u306a\u30a8\u30e9\u30fc\u306b\u5bfe\u3059\u308b\u30ea\u30c8\u30e9\u30a4\u6226\u7565\u3092\u5b9f\u88c5\u3057\u3001\u4e00\u90e8\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5931\u6557\u304c\u5168\u4f53\u306e\u51e6\u7406\u3092\u59a8\u3052\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30e1\u30e2\u30ea\u7ba1\u7406<\/strong>\uff1a\u5927\u91cf\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u5834\u5408\u306f\u3001\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306b\u6ce8\u610f\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30c7\u30fc\u30bf\u3092\u6bb5\u968e\u7684\u306b\u51e6\u7406\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-122\">\u307e\u3068\u3081<\/h3>\n\n\n\n<p>PHP\u306ecURL\u30de\u30eb\u30c1\u6a5f\u80fd\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u8907\u6570\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u52b9\u7387\u7684\u306b\u4e26\u5217\u51e6\u7406\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u7279\u306b\u591a\u6570\u306eAPI\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5834\u5408\u3084\u3001\u76f8\u4e92\u306b\u4f9d\u5b58\u3057\u306a\u3044\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3059\u308b\u5834\u5408\u306b\u5927\u5e45\u306a\u6642\u9593\u77ed\u7e2e\u304c\u53ef\u80fd\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u4e3b\u8981\u306a\u30dd\u30a4\u30f3\u30c8\u3092\u307e\u3068\u3081\u308b\u3068\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>curl_multi_init()\u3068\u305d\u306e\u95a2\u9023\u95a2\u6570<\/strong>\u3092\u4f7f\u7528\u3057\u3066\u3001\u8907\u6570\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4e26\u5217\u306b\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u975e\u540c\u671f\u51e6\u7406<\/strong>\u3092PHP\u3067\u7591\u4f3c\u7684\u306b\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306b\u3001\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u30d9\u30fc\u30b9\u306e\u51e6\u7406\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u5927\u91cf\u306e\u30ea\u30af\u30a8\u30b9\u30c8<\/strong>\u3092\u51e6\u7406\u3059\u308b\u5834\u5408\u306f\u3001\u30d0\u30c3\u30c1\u51e6\u7406\u3092\u4f7f\u7528\u3057\u3066\u30ea\u30bd\u30fc\u30b9\u4f7f\u7528\u91cf\u3092\u7ba1\u7406\u3057\u3001API\u5236\u9650\u3092\u56de\u907f\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001PHP\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u3082\u52b9\u7387\u7684\u306aAPI\u9023\u643a\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u6b21\u7ae0\u3067\u306f\u3001\u6700\u65b0\u306ePHP\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306ecURL\u306e\u65b0\u6a5f\u80fd\u3068\u6539\u5584\u70b9\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-123\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af8\uff1acURL\u3068PHP7\/8\u306e\u65b0\u6a5f\u80fd<\/h2>\n\n\n\n<p>PHP\u306e\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\uff08PHP 7.x \u304a\u3088\u3073 PHP 8.x\uff09\u3067\u306f\u3001cURL\u62e1\u5f35\u306b\u95a2\u3059\u308b\u591a\u304f\u306e\u6539\u5584\u3068\u65b0\u6a5f\u80fd\u304c\u5c0e\u5165\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u6539\u5584\u70b9\u3068\u65b0\u6a5f\u80fd\u3092\u3069\u306e\u3088\u3046\u306b\u6d3b\u7528\u3067\u304d\u308b\u304b\u3001\u305d\u3057\u3066\u5f93\u6765\u306e\u30b3\u30fc\u30c9\u3092\u3069\u306e\u3088\u3046\u306b\u79fb\u884c\u3059\u3079\u304d\u304b\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-124\">\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306e\u6539\u5584\u70b9<\/h3>\n\n\n\n<p>PHP 7.0\u4ee5\u964d\u3001cURL\u62e1\u5f35\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u306f\u6bb5\u968e\u7684\u306b\u591a\u304f\u306e\u6539\u5584\u304c\u65bd\u3055\u308c\u3066\u304d\u307e\u3057\u305f\u3002\u7279\u306b\u91cd\u8981\u306a\u6539\u5584\u70b9\u3092PHP\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u5225\u306b\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-125\">PHP 7.x\u3067\u306e\u4e3b\u306a\u6539\u5584\u70b9<\/h4>\n\n\n\n<p><strong>PHP 7.0\u306e\u6539\u5584\u70b9<\/strong>\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>CURLFile<\/code> \u30af\u30e9\u30b9\u306e\u5f37\u5316<\/li>\n\n\n\n<li>\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u308b\u30d7\u30ed\u30c8\u30b3\u30eb\u306e\u62e1\u5f35<\/li>\n\n\n\n<li>\u30a8\u30e9\u30fc\u30ec\u30dd\u30fc\u30c8\u306e\u6539\u5584<\/li>\n<\/ul>\n\n\n\n<p><strong>PHP 7.1\u306e\u6539\u5584\u70b9<\/strong>\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>CURLMOPT_PUSHFUNCTION<\/code> \u306e\u30b5\u30dd\u30fc\u30c8\uff08HTTP\/2\u30d7\u30c3\u30b7\u30e5\uff09<\/li>\n\n\n\n<li>\u30af\u30ed\u30fc\u30b8\u30e3\u30fc\u3067\u306e\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u306e\u6539\u5584<\/li>\n<\/ul>\n\n\n\n<p><strong>PHP 7.2-7.4\u306e\u6539\u5584\u70b9<\/strong>\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>TLS 1.3\u306e\u30b5\u30dd\u30fc\u30c8<\/li>\n\n\n\n<li>\u65b0\u3057\u3044cURL\u30aa\u30d7\u30b7\u30e7\u30f3\uff08<code>CURLOPT_PROXY_CAINFO<\/code>\u3001<code>CURLOPT_PRE_PROXY<\/code> \u306a\u3069\uff09<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ PHP 7.x\u3067\u306e\u65b0\u3057\u3044\u30aa\u30d7\u30b7\u30e7\u30f3\u4f8b\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; 'https:\/\/api.example.com\/data',\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    \n    \/\/ PHP 7.0.7\u4ee5\u964d\u3067\u5229\u7528\u53ef\u80fd\uff1a\n    \/\/ \u8ee2\u9001\u3092\u958b\u59cb\u3059\u308b\u306e\u306b\u304b\u304b\u3063\u305f\u6642\u9593\u3092\u30de\u30a4\u30af\u30ed\u79d2\u5358\u4f4d\u3067\u53d6\u5f97\n    CURLOPT_XFERINFOFUNCTION =&gt; function($ch, $dlTotal, $dlNow, $ulTotal, $ulNow) {\n        static $startTime = null;\n        if ($startTime === null) {\n            $startTime = microtime(true);\n        }\n        $currentTime = microtime(true);\n        \n        echo \"\u7d4c\u904e\u6642\u9593: \" . ($currentTime - $startTime) . \" \u79d2\\n\";\n        \n        return 0; \/\/ \u8ee2\u9001\u3092\u7d99\u7d9a\n    },\n    CURLOPT_NOPROGRESS =&gt; false,\n    \n    \/\/ PHP 7.3\u4ee5\u964d\u3067\u5c0e\u5165\uff1a\u6bce\u56deDNS\u3092\u89e3\u6c7a\uff08\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u4f7f\u7528\u3057\u306a\u3044\uff09\n    CURLOPT_DNS_USE_GLOBAL_CACHE =&gt; false\n]);\n\n$result = curl_exec($ch);\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-126\">PHP 8.x\u3067\u306e\u4e3b\u306a\u6539\u5584\u70b9<\/h4>\n\n\n\n<p><strong>PHP 8.0\u306e\u6539\u5584\u70b9<\/strong>\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>cURL\u30de\u30eb\u30c1\u30cf\u30f3\u30c9\u30eb\u306e\u30ea\u30bd\u30fc\u30b9\u304b\u3089\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3078\u306e\u5909\u66f4<\/li>\n\n\n\n<li>\u4e0d\u6b63\u306a\u5f15\u6570\u578b\u306b\u5bfe\u3059\u308b\u3088\u308a\u53b3\u683c\u306a\u30bf\u30a4\u30d7\u30c1\u30a7\u30c3\u30af<\/li>\n\n\n\n<li>\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6539\u5584<\/li>\n\n\n\n<li>\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\u3068\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0<\/li>\n<\/ul>\n\n\n\n<p><strong>PHP 8.1\u306e\u6539\u5584\u70b9<\/strong>\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CURL\u30b9\u30c8\u30ea\u30fc\u30e0\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u62e1\u5f35<\/li>\n\n\n\n<li><code>curl_upkeep()<\/code> \u95a2\u6570\u306e\u8ffd\u52a0\uff08\u63a5\u7d9a\u30d7\u30fc\u30eb\u306e\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\uff09<\/li>\n\n\n\n<li>\u53e4\u3044libcurl\u30d0\u30fc\u30b8\u30e7\u30f3\u3078\u306e\u4f9d\u5b58\u306b\u95a2\u3059\u308b\u8b66\u544a<\/li>\n<\/ul>\n\n\n\n<p><strong>PHP 8.2-8.3\u306e\u6539\u5584\u70b9<\/strong>\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>HTTP\/3 (QUIC) \u5bfe\u5fdc\u306e\u5f37\u5316<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/li>\n\n\n\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u5f37\u5316<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ PHP 8.x\u3067\u306e\u30b3\u30fc\u30c9\u4f8b\ntry {\n    $ch = curl_init('https:\/\/api.example.com\/data');\n    \n    \/\/ PHP 8\u3067\u3088\u308a\u53b3\u683c\u306b\u306a\u3063\u305f\u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a\n    curl_setopt_array($ch, [\n        CURLOPT_RETURNTRANSFER =&gt; true,\n        \n        \/\/ PHP 8.1\u4ee5\u964d\u3067\u5229\u7528\u53ef\u80fd\uff1a\u63a5\u7d9a\u30d7\u30fc\u30eb\u306e\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\n        \/\/ CURLOPT_UPKEEP =&gt; true,\n        \n        \/\/ \u3088\u308a\u5b89\u5168\u306aHTTP\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u305f\u3081\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\n        CURLOPT_PROTOCOLS =&gt; CURLPROTO_HTTPS,\n        CURLOPT_SSLVERSION =&gt; CURL_SSLVERSION_TLSv1_2,\n        \n        \/\/ HTTP\/2\u30b5\u30dd\u30fc\u30c8\uff08PHP 8\u3067\u3088\u308a\u5b89\u5b9a\uff09\n        CURLOPT_HTTP_VERSION =&gt; CURL_HTTP_VERSION_2_0\n    ]);\n    \n    $result = curl_exec($ch);\n    \n    if ($result === false) {\n        throw new Exception(curl_error($ch), curl_errno($ch));\n    }\n    \n    curl_close($ch);\n    \n    \/\/ \u7d50\u679c\u306e\u51e6\u7406\n    var_dump($result);\n    \n} catch (Exception $e) {\n    echo \"cURL\u30a8\u30e9\u30fc ({$e-&gt;getCode()}): {$e-&gt;getMessage()}\\n\";\n}\n?&gt;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-127\">\u65b0\u3057\u3044\u30aa\u30d7\u30b7\u30e7\u30f3\u3068\u6a5f\u80fd\u306e\u6d3b\u7528<\/h3>\n\n\n\n<p>PHP 7.x\u304a\u3088\u30738.x\u3067\u306f\u3001\u591a\u6570\u306e\u65b0\u3057\u3044cURL\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u65b0\u6a5f\u80fd\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u52b9\u7387\u7684\u3067\u5b89\u5168\u306aAPI\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-128\">HTTP\/2\u30b5\u30dd\u30fc\u30c8\u306e\u6d3b\u7528<\/h4>\n\n\n\n<p>HTTP\/2\u306fHTTP\/1.1\u3068\u6bd4\u8f03\u3057\u3066\u591a\u304f\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6539\u5584\uff08\u591a\u91cd\u5316\u3001\u30d8\u30c3\u30c0\u30fc\u5727\u7e2e\u306a\u3069\uff09\u3092\u3082\u305f\u3089\u3057\u307e\u3059\u3002PHP 7.0.7\u4ee5\u964d\u3067\u306f\u3001HTTP\/2\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u5f37\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; 'https:\/\/api.example.com\/data',\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    \n    \/\/ HTTP\/2\u3092\u512a\u5148\u7684\u306b\u4f7f\u7528\n    CURLOPT_HTTP_VERSION =&gt; CURL_HTTP_VERSION_2_0,\n    \n    \/\/ HTTP\/2\u306e\u30b5\u30fc\u30d0\u30fc\u30d7\u30c3\u30b7\u30e5\u6a5f\u80fd\u3092\u6709\u52b9\u5316\uff08PHP 7.1\u4ee5\u964d\uff09\n    \/\/ \u30b5\u30fc\u30d0\u30fc\u30d7\u30c3\u30b7\u30e5\u3092\u53d7\u3051\u5165\u308c\u308b\u304b\u3069\u3046\u304b\u3092\u6c7a\u5b9a\u3059\u308b\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\n    CURLOPT_PUSHFUNCTION =&gt; function($parent, $pushed, $headers) {\n        echo \"\u30b5\u30fc\u30d0\u30fc\u30d7\u30c3\u30b7\u30e5\u3092\u53d7\u4fe1: \" . curl_getinfo($pushed, CURLINFO_EFFECTIVE_URL) . \"\\n\";\n        \n        \/\/ \u30d7\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30ea\u30bd\u30fc\u30b9\u3092\u53d7\u3051\u5165\u308c\u308b\n        return CURL_PUSH_OK;\n    }\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n\necho $response;\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-129\">\u62e1\u5f35\u3055\u308c\u305f\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/h4>\n\n\n\n<p>PHP 7\u304a\u3088\u30738\u3067\u306f\u3001cURL\u30a8\u30e9\u30fc\u306e\u51e6\u7406\u3068\u5831\u544a\u304c\u6539\u5584\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u7279\u306bPHP 8\u3067\u306f\u3001\u578b\u30a8\u30e9\u30fc\u306b\u95a2\u3059\u308b\u4f8b\u5916\u51e6\u7406\u304c\u5f37\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ PHP 8\u3067\u306e\u6539\u5584\u3055\u308c\u305f\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\nfunction makeApiRequest($url, $options = []) {\n    \/\/ PHP 8\u3067\u306f\u7121\u52b9\u306aURL\u306b\u5bfe\u3057\u3066 TypeError\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u308b\n    $ch = curl_init($url);\n    \n    \/\/ \u30c7\u30d5\u30a9\u30eb\u30c8\u30aa\u30d7\u30b7\u30e7\u30f3\n    $defaultOptions = [\n        CURLOPT_RETURNTRANSFER =&gt; true,\n        CURLOPT_TIMEOUT =&gt; 30,\n        CURLOPT_FAILONERROR =&gt; true \/\/ HTTP\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\u3067false\u3092\u8fd4\u3059\n    ];\n    \n    curl_setopt_array($ch, $defaultOptions + $options);\n    \n    \/\/ try-finally\u30d6\u30ed\u30c3\u30af\u3067\u30ea\u30bd\u30fc\u30b9\u30ea\u30fc\u30af\u3092\u9632\u6b62\n    try {\n        $response = curl_exec($ch);\n        \n        if ($response === false) {\n            $errorCode = curl_errno($ch);\n            $errorMessage = curl_error($ch);\n            $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n            \n            \/\/ \u30a8\u30e9\u30fc\u60c5\u5831\u3092\u3088\u308a\u8a73\u7d30\u306b\u63d0\u4f9b\n            throw new RuntimeException(\n                \"cURL\u30a8\u30e9\u30fc ($errorCode): $errorMessage, HTTP\u30b9\u30c6\u30fc\u30bf\u30b9: $httpCode\",\n                $errorCode\n            );\n        }\n        \n        return $response;\n    } finally {\n        \/\/ \u5e38\u306bcURL\u30cf\u30f3\u30c9\u30eb\u3092\u9589\u3058\u308b\n        curl_close($ch);\n    }\n}\n\ntry {\n    $response = makeApiRequest('https:\/\/api.example.com\/data');\n    echo \"API\u30ec\u30b9\u30dd\u30f3\u30b9: $response\\n\";\n} catch (TypeError $e) {\n    echo \"\u578b\u30a8\u30e9\u30fc: \" . $e-&gt;getMessage() . \"\\n\";\n} catch (RuntimeException $e) {\n    echo \"\u5b9f\u884c\u6642\u30a8\u30e9\u30fc: \" . $e-&gt;getMessage() . \"\\n\";\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-130\">\u65b0\u3057\u3044\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u6a5f\u80fd<\/h4>\n\n\n\n<p>PHP 7.4\u4ee5\u964d\u3067\u306f\u3001\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3068\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u6539\u5584\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5927\u304d\u306a\u30d5\u30a1\u30a4\u30eb\u306e\u8ee2\u9001\u3092\u3088\u308a\u52b9\u7387\u7684\u306b\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u5927\u304d\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\n$url = 'https:\/\/example.com\/large-file.zip';\n$outputFile = 'downloaded-file.zip';\n\n\/\/ \u51fa\u529b\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\n$fp = fopen($outputFile, 'w+');\n\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; $url,\n    CURLOPT_TIMEOUT =&gt; 120,\n    CURLOPT_FILE =&gt; $fp,           \/\/ \u76f4\u63a5\u30d5\u30a1\u30a4\u30eb\u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\n    CURLOPT_FOLLOWLOCATION =&gt; true,\n    CURLOPT_SSL_VERIFYPEER =&gt; true,\n    \n    \/\/ PHP 7.4\u4ee5\u964d\u3067\u3088\u308a\u5b89\u5b9a\uff1a \u9032\u6357\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\n    CURLOPT_NOPROGRESS =&gt; false,\n    CURLOPT_XFERINFOFUNCTION =&gt; function($curl, $dlTotal, $dlNow, $ulTotal, $ulNow) {\n        if ($dlTotal &gt; 0) {\n            $progress = round(($dlNow \/ $dlTotal) * 100, 1);\n            echo \"\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u9032\u6357: $progress% ($dlNow \/ $dlTotal \u30d0\u30a4\u30c8)\\r\";\n        }\n        return 0; \/\/ 0\u3092\u8fd4\u3057\u3066\u8ee2\u9001\u3092\u7d99\u7d9a\n    }\n]);\n\n$success = curl_exec($ch);\ncurl_close($ch);\nfclose($fp);\n\nif ($success) {\n    echo \"\\n\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u5b8c\u4e86: $outputFile\\n\";\n} else {\n    echo \"\\n\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u5931\u6557\\n\";\n    unlink($outputFile); \/\/ \u4e0d\u5b8c\u5168\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\n}\n?&gt;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-131\">\u5f93\u6765\u306e\u30b3\u30fc\u30c9\u306e\u4e92\u63db\u6027\u3068\u79fb\u884c\u306e\u30dd\u30a4\u30f3\u30c8<\/h3>\n\n\n\n<p>PHP 7\u304b\u30898\u3078\u306e\u79fb\u884c\u3067\u306f\u3001cURL\u95a2\u9023\u306e\u30b3\u30fc\u30c9\u306b\u5f71\u97ff\u3059\u308b\u5909\u66f4\u304c\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059\u3002\u4e3b\u8981\u306a\u4e92\u63db\u6027\u306e\u554f\u984c\u3068\u79fb\u884c\u306e\u30dd\u30a4\u30f3\u30c8\u3092\u4ee5\u4e0b\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-132\">\u30ea\u30bd\u30fc\u30b9\u304b\u3089\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3078\u306e\u5909\u66f4<\/h4>\n\n\n\n<p>PHP 8.0\u3067\u306f\u3001cURL\u30de\u30eb\u30c1\u30cf\u30f3\u30c9\u30eb\u304c\u30ea\u30bd\u30fc\u30b9\u304b\u3089\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u5909\u66f4\u3055\u308c\u307e\u3057\u305f\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u578b\u30c1\u30a7\u30c3\u30af\u3084 <code>is_resource()<\/code> \u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u30b3\u30fc\u30c9\u306b\u5f71\u97ff\u304c\u51fa\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ PHP 7.x\u4ee5\u524d\u306e\u30b3\u30fc\u30c9\n$mh = curl_multi_init();\nif (is_resource($mh)) {\n    \/\/ \u30de\u30eb\u30c1\u30cf\u30f3\u30c9\u30eb\u3092\u4f7f\u7528...\n}\n\n\/\/ PHP 8.0\u4ee5\u964d\u306e\u4e92\u63db\u6027\u306e\u3042\u308b\u30b3\u30fc\u30c9\n$mh = curl_multi_init();\nif (is_resource($mh) || is_object($mh)) {\n    \/\/ \u30de\u30eb\u30c1\u30cf\u30f3\u30c9\u30eb\u3092\u4f7f\u7528...\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-133\">\u975e\u63a8\u5968\u6a5f\u80fd\u306e\u5ec3\u6b62<\/h4>\n\n\n\n<p>PHP 7.x\u304a\u3088\u30738.x\u3067\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u975e\u63a8\u5968\u6a5f\u80fd\u304c\u5ec3\u6b62\u3055\u308c\u307e\u3057\u305f\u3002\u7279\u306b\u3001\u30d5\u30a1\u30a4\u30eb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u6642\u306e <code>@<\/code> \u8a18\u6cd5\u306f\u5b8c\u5168\u306b\u5ec3\u6b62\u3055\u308c\u3001\u4ee3\u308f\u308a\u306b <code>CURLFile<\/code> \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ PHP 5.5\u672a\u6e80\u306e\u53e4\u3044\u65b9\u6cd5\uff08PHP 7\u4ee5\u964d\u3067\u306f\u52d5\u4f5c\u3057\u306a\u3044\uff09\n$postData = [\n    'file' =&gt; '@\/path\/to\/file.jpg'\n];\n\n\/\/ \u65b0\u3057\u3044\u65b9\u6cd5\uff08PHP 5.5\u4ee5\u964d\u30017.x\u30018.x\u3067\u52d5\u4f5c\uff09\n$postData = [\n    'file' =&gt; new CURLFile('\/path\/to\/file.jpg', 'image\/jpeg', 'file.jpg')\n];\n\n$ch = curl_init('https:\/\/api.example.com\/upload');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_POST =&gt; true,\n    CURLOPT_POSTFIELDS =&gt; $postData\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-134\">\u53b3\u683c\u306a\u30bf\u30a4\u30d7\u30c1\u30a7\u30c3\u30af<\/h4>\n\n\n\n<p>PHP 8\u3067\u306f\u3001cURL\u95a2\u6570\u3078\u306e\u5f15\u6570\u306e\u30bf\u30a4\u30d7\u30c1\u30a7\u30c3\u30af\u304c\u3088\u308a\u53b3\u683c\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u7121\u52b9\u306a\u5f15\u6570\u578b\u3092\u6e21\u3059\u3068\u3001\u8b66\u544a\u3067\u306f\u306a\u304f <code>TypeError<\/code> \u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ PHP 7.x\u3067\u306f\u8b66\u544a\u3092\u767a\u751f\u3055\u305b\u3001\u30a8\u30e9\u30fc\u306b\u306a\u308b\u30b3\u30fc\u30c9\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, ['https:\/\/example.com']); \/\/ \u914d\u5217\u3092\u6e21\u3059\uff08\u7121\u52b9\uff09\n\n\/\/ PHP 8\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30bf\u30a4\u30d7\u30bb\u30fc\u30d5\u306a\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u5fc5\u8981\u304c\u3042\u308b\n$ch = curl_init();\n$url = 'https:\/\/example.com';\ncurl_setopt($ch, CURLOPT_URL, $url);\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-135\">TLS\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5909\u66f4<\/h4>\n\n\n\n<p>PHP 7.2\u4ee5\u964d\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306eTLS\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u5909\u66f4\u3055\u308c\u3001\u3088\u308a\u5b89\u5168\u306a\u30d7\u30ed\u30c8\u30b3\u30eb\u304c\u512a\u5148\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u53e4\u3044\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u5834\u5408\u306f\u3001\u660e\u793a\u7684\u306bTLS\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; 'https:\/\/legacy-server.example.com',\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    \n    \/\/ \u53e4\u3044\u30b5\u30fc\u30d0\u30fc\u7528\uff08\u3042\u307e\u308a\u63a8\u5968\u3055\u308c\u306a\u3044\uff09\n    CURLOPT_SSLVERSION =&gt; CURL_SSLVERSION_TLSv1_1,\n    \n    \/\/ \u6700\u65b0\u306e\u30b5\u30fc\u30d0\u30fc\u7528\uff08\u63a8\u5968\uff09\n    \/\/ CURLOPT_SSLVERSION =&gt; CURL_SSLVERSION_TLSv1_2\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-136\">PHP 7.x\/8.x\u3078\u306e\u79fb\u884c\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/h3>\n\n\n\n<p>PHP 7.x\u307e\u305f\u306f8.x\u306bcURL\u30b3\u30fc\u30c9\u3092\u79fb\u884c\u3059\u308b\u969b\u306b\u78ba\u8a8d\u3059\u3079\u304d\u9805\u76ee\u3092\u307e\u3068\u3081\u307e\u3057\u305f\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d5\u30a1\u30a4\u30eb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9<\/strong>: <code>@<\/code>\u8a18\u6cd5\u3092<code>CURLFile<\/code>\u30af\u30e9\u30b9\u306b\u7f6e\u304d\u63db\u3048\u308b<\/li>\n\n\n\n<li><strong>\u578b\u30c1\u30a7\u30c3\u30af<\/strong>: \u53b3\u683c\u306a\u578b\u30c1\u30a7\u30c3\u30af\u306b\u5bfe\u5fdc\u3059\u308b\u305f\u3081\u30b3\u30fc\u30c9\u3092\u898b\u76f4\u3059<\/li>\n\n\n\n<li><strong>\u30ea\u30bd\u30fc\u30b9\u30c1\u30a7\u30c3\u30af<\/strong>: <code>is_resource()<\/code>\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u30b3\u30fc\u30c9\u3092\u66f4\u65b0<\/li>\n\n\n\n<li><strong>TLS\u8a2d\u5b9a<\/strong>: \u9069\u5207\u306aTLS\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u660e\u793a\u7684\u306b\u6307\u5b9a<\/li>\n\n\n\n<li><strong>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/strong>: \u65b0\u3057\u3044\u4f8b\u5916\u51e6\u7406\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u6d3b\u7528<\/li>\n\n\n\n<li><strong>\u65b0\u6a5f\u80fd\u306e\u6d3b\u7528<\/strong>: HTTP\/2\u3001\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u6a5f\u80fd\u306a\u3069\u65b0\u6a5f\u80fd\u3092\u5c0e\u5165<\/li>\n\n\n\n<li><strong>\u975e\u63a8\u5968\u30aa\u30d7\u30b7\u30e7\u30f3<\/strong>: \u975e\u63a8\u5968\u306b\u306a\u3063\u305f\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u6700\u65b0\u306e\u3082\u306e\u306b\u7f6e\u304d\u63db\u3048\u308b<\/li>\n\n\n\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c6\u30b9\u30c8<\/strong>: \u79fb\u884c\u5f8c\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u30c6\u30b9\u30c8\u3057\u3066\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-137\">\u307e\u3068\u3081<\/h3>\n\n\n\n<p>PHP 7.x\u304a\u3088\u30738.x\u3067\u306ecURL\u62e1\u5f35\u306e\u6539\u5584\u3068\u65b0\u6a5f\u80fd\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u52b9\u7387\u7684\u3067\u5b89\u5168\u306aAPI\u9023\u643a\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u4e3b\u8981\u306a\u30dd\u30a4\u30f3\u30c8\u3092\u307e\u3068\u3081\u308b\u3068\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>HTTP\/2\u30b5\u30dd\u30fc\u30c8<\/strong>: \u591a\u91cd\u5316\u3084\u30d8\u30c3\u30c0\u30fc\u5727\u7e2e\u306a\u3069\u306b\u3088\u308b\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5411\u4e0a<\/li>\n\n\n\n<li><strong>\u5411\u4e0a\u3057\u305f\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3<\/strong>: \u65b0\u3057\u3044TLS\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30b5\u30dd\u30fc\u30c8\u3068\u5f37\u5316\u3055\u308c\u305f\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30aa\u30d7\u30b7\u30e7\u30f3<\/li>\n\n\n\n<li><strong>\u6539\u5584\u3055\u308c\u305f\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/strong>: \u3088\u308a\u8a73\u7d30\u306a\u30a8\u30e9\u30fc\u60c5\u5831\u3068\u4f8b\u5916\u51e6\u7406<\/li>\n\n\n\n<li><strong>\u65b0\u3057\u3044\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u6a5f\u80fd<\/strong>: \u5927\u304d\u306a\u30d5\u30a1\u30a4\u30eb\u306e\u52b9\u7387\u7684\u306a\u8ee2\u9001<\/li>\n\n\n\n<li><strong>\u578b\u306e\u5b89\u5168\u6027<\/strong>: \u3088\u308a\u53b3\u683c\u306a\u30bf\u30a4\u30d7\u30c1\u30a7\u30c3\u30af\u306b\u3088\u308b\u30d0\u30b0\u306e\u65e9\u671f\u767a\u898b<\/li>\n<\/ol>\n\n\n\n<p>PHP\u306e\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u79fb\u884c\u3059\u308b\u969b\u306f\u3001\u3053\u308c\u3089\u306e\u6539\u5584\u70b9\u3068\u4e92\u63db\u6027\u306e\u554f\u984c\u3092\u8003\u616e\u3057\u3066\u3001\u30b3\u30fc\u30c9\u3092\u9069\u5207\u306b\u66f4\u65b0\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u3088\u308a\u5805\u7262\u3067\u52b9\u7387\u7684\u306aAPI\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-138\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af9\uff1acURL\u306e\u4ee3\u66ff\u624b\u6bb5\u3068\u6bd4\u8f03<\/h2>\n\n\n\n<p>cURL\u306fPHP\u3067HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u884c\u3046\u305f\u3081\u306e\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3067\u3059\u304c\u3001\u72b6\u6cc1\u306b\u3088\u3063\u3066\u306f\u4ed6\u306e\u9078\u629e\u80a2\u3092\u691c\u8a0e\u3059\u308b\u4fa1\u5024\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001PHP\u3067HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u5b9f\u88c5\u3059\u308b\u4ee3\u66ff\u624b\u6bb5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3001\u305d\u308c\u305e\u308c\u306e\u9577\u6240\u3068\u77ed\u6240\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u3069\u306e\u3088\u3046\u306a\u72b6\u6cc1\u3067\u3069\u306e\u624b\u6cd5\u304c\u9069\u3057\u3066\u3044\u308b\u304b\u306b\u3064\u3044\u3066\u3082\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-139\">Guzzle HTTP \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u306e\u6bd4\u8f03<\/h3>\n\n\n\n<p><a href=\"https:\/\/github.com\/guzzle\/guzzle\">Guzzle<\/a>\u306f\u3001PHP\u306e\u305f\u3081\u306e\u73fe\u4ee3\u7684\u306aHTTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3042\u308a\u3001cURL\u306e\u4e0a\u306b\u69cb\u7bc9\u3055\u308c\u305f\u62bd\u8c61\u5316\u30ec\u30a4\u30e4\u30fc\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u591a\u304f\u306e\u4eba\u6c17\u306e\u3042\u308bPHP\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\uff08Laravel\u3001Symfony\u306a\u3069\uff09\u3084\u30d1\u30c3\u30b1\u30fc\u30b8\u3067\u3082\u63a1\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-140\">Guzzle\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9<\/h4>\n\n\n\n<p>Guzzle\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u307e\u305aComposer\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">composer require guzzlehttp\/guzzle\n<\/pre>\n\n\n\n<p>\u57fa\u672c\u7684\u306aHTTP\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nrequire 'vendor\/autoload.php';\n\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\Exception\\RequestException;\n\n\/\/ \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u521d\u671f\u5316\n$client = new Client([\n    'base_uri' =&gt; 'https:\/\/api.example.com\/',\n    'timeout'  =&gt; 5.0,\n]);\n\ntry {\n    \/\/ GET\u30ea\u30af\u30a8\u30b9\u30c8\n    $response = $client-&gt;get('users', [\n        'query' =&gt; ['page' =&gt; 1, 'per_page' =&gt; 10]\n    ]);\n    \n    \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406\n    $statusCode = $response-&gt;getStatusCode();\n    $content = $response-&gt;getBody()-&gt;getContents();\n    \n    echo \"\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9: {$statusCode}\\n\";\n    echo \"\u30ec\u30b9\u30dd\u30f3\u30b9\u5185\u5bb9: {$content}\\n\";\n    \n    \/\/ JSON\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u5834\u5408\n    $data = json_decode($content, true);\n    print_r($data);\n    \n} catch (RequestException $e) {\n    echo \"\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: \" . $e-&gt;getMessage() . \"\\n\";\n    \n    if ($e-&gt;hasResponse()) {\n        echo \"\u30a8\u30e9\u30fc\u30ec\u30b9\u30dd\u30f3\u30b9: \" . $e-&gt;getResponse()-&gt;getBody() . \"\\n\";\n    }\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-141\">Guzzle\u306e\u9577\u6240<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30e2\u30c0\u30f3\u306aAPI\u8a2d\u8a08<\/strong>\uff1a\u6d41\u66a2\u306a\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3068PSR-7\u6e96\u62e0\u306e\u8a2d\u8a08\u3067\u3001\u8aad\u307f\u3084\u3059\u304f\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30b3\u30fc\u30c9\u3092\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u5f37\u529b\u306a\u4f8b\u5916\u51e6\u7406<\/strong>\uff1a\u3088\u308a\u8a73\u7d30\u306a\u4f8b\u5916\u60c5\u5831\u3068\u3001try-catch\u306b\u3088\u308b\u660e\u78ba\u306a\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u304c\u53ef\u80fd\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3068\u30a4\u30d9\u30f3\u30c8<\/strong>\uff1a\u30ea\u30af\u30a8\u30b9\u30c8\/\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3067\u304d\u308b\u67d4\u8edf\u306a\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u30b7\u30b9\u30c6\u30e0\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\HandlerStack;\nuse GuzzleHttp\\Middleware;\nuse Psr\\Http\\Message\\RequestInterface;\n\n\/\/ \u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u4f5c\u6210\n$addHeaderMiddleware = Middleware::mapRequest(function (RequestInterface $request) {\n    return $request-&gt;withHeader('X-Custom-Header', 'CustomValue');\n});\n\n\/\/ \u30cf\u30f3\u30c9\u30e9\u30fc\u30b9\u30bf\u30c3\u30af\u3092\u4f5c\u6210\u3057\u3001\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u8ffd\u52a0\n$stack = HandlerStack::create();\n$stack-&gt;push($addHeaderMiddleware);\n\n\/\/ \u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u4ed8\u304d\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3092\u4f5c\u6210\n$client = new Client([\n    'handler' =&gt; $stack,\n    'base_uri' =&gt; 'https:\/\/api.example.com\/'\n]);\n\n\/\/ \u4ee5\u964d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306f\u5168\u3066 X-Custom-Header \u30d8\u30c3\u30c0\u30fc\u304c\u8ffd\u52a0\u3055\u308c\u308b\n$response = $client-&gt;get('users');\n?&gt;\n<\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>\u975e\u540c\u671f\u30ea\u30af\u30a8\u30b9\u30c8<\/strong>\uff1apromise\/A+\u4e92\u63db\u306e\u975e\u540c\u671f\u30ea\u30af\u30a8\u30b9\u30c8\u6a5f\u80fd\u3092\u5099\u3048\u3066\u3044\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\Promise;\n\n$client = new Client();\n\n\/\/ \u8907\u6570\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u975e\u540c\u671f\u3067\u5b9f\u884c\n$promises = [\n    'users' =&gt; $client-&gt;getAsync('https:\/\/api.example.com\/users'),\n    'posts' =&gt; $client-&gt;getAsync('https:\/\/api.example.com\/posts'),\n    'comments' =&gt; $client-&gt;getAsync('https:\/\/api.example.com\/comments')\n];\n\n\/\/ \u3059\u3079\u3066\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u306e\u3092\u5f85\u6a5f\n$results = Promise\\Utils::unwrap($promises);\n\n\/\/ \u7d50\u679c\u3092\u51e6\u7406\nforeach ($results as $key =&gt; $response) {\n    echo \"{$key}: \" . $response-&gt;getStatusCode() . \"\\n\";\n    $data = json_decode($response-&gt;getBody(), true);\n    \/\/ \u30c7\u30fc\u30bf\u306e\u51e6\u7406...\n}\n?&gt;\n<\/pre>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li><strong>\u30e2\u30c3\u30af\u30c6\u30b9\u30c8<\/strong>\uff1a\u5358\u4f53\u30c6\u30b9\u30c8\u7528\u306e\u30e2\u30c3\u30af\u5fdc\u7b54\u3092\u7c21\u5358\u306b\u4f5c\u6210\u3067\u304d\u308b\u305f\u3081\u3001\u5916\u90e8API\u306b\u4f9d\u5b58\u3059\u308b\u30b3\u30fc\u30c9\u306e\u30c6\u30b9\u30c8\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\Handler\\MockHandler;\nuse GuzzleHttp\\HandlerStack;\nuse GuzzleHttp\\Psr7\\Response;\n\n\/\/ \u30e2\u30c3\u30af\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u4f5c\u6210\n$mock = new MockHandler([\n    new Response(200, [], '{\"result\": \"success\"}'),\n    new Response(404, [], '{\"error\": \"Not found\"}')\n]);\n\n$handlerStack = HandlerStack::create($mock);\n$client = new Client(['handler' =&gt; $handlerStack]);\n\n\/\/ 1\u56de\u76ee\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306f200\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u8fd4\u3059\n$response1 = $client-&gt;request('GET', 'https:\/\/example.com\/');\necho $response1-&gt;getStatusCode(); \/\/ 200\n\n\/\/ 2\u56de\u76ee\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306f404\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u8fd4\u3059\n$response2 = $client-&gt;request('GET', 'https:\/\/example.com\/');\necho $response2-&gt;getStatusCode(); \/\/ 404\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-142\">Guzzle\u306e\u77ed\u6240<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4f9d\u5b58\u95a2\u4fc2\u306e\u5897\u52a0<\/strong>\uff1a\u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea\u3078\u306e\u4f9d\u5b58\u304c\u5897\u3048\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u5b66\u7fd2\u66f2\u7dda<\/strong>\uff1acURL\u3088\u308a\u3082\u6982\u5ff5\u304c\u591a\u3044\u305f\u3081\u3001\u5b66\u7fd2\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9<\/strong>\uff1a\u62bd\u8c61\u5316\u30ec\u30a4\u30e4\u30fc\u306b\u3088\u308b\u82e5\u5e72\u306e\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u304c\u751f\u3058\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u67d4\u8edf\u6027\u306e\u5236\u9650<\/strong>\uff1a\u7279\u6b8a\u306acURL\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u4e2d\u306b\u306f\u3001Guzzle\u3067\u306f\u76f4\u63a5\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u3044\u3082\u306e\u3082\u3042\u308a\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-143\">file_get_contents() \u306e\u4f7f\u3044\u65b9<\/h3>\n\n\n\n<p><code>file_get_contents()<\/code>\u95a2\u6570\u306f\u3001PHP\u306b\u7d44\u307f\u8fbc\u307e\u308c\u305f\u95a2\u6570\u3067\u3001\u30d5\u30a1\u30a4\u30eb\u3084URL\u306e\u5185\u5bb9\u3092\u6587\u5b57\u5217\u3068\u3057\u3066\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002HTTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u3057\u3066\u306f\u6700\u3082\u30b7\u30f3\u30d7\u30eb\u306a\u9078\u629e\u80a2\u3067\u3059\u304c\u3001\u6a5f\u80fd\u306f\u9650\u5b9a\u7684\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-144\">\u57fa\u672c\u7684\u306a\u4f7f\u7528\u65b9\u6cd5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ \u30b7\u30f3\u30d7\u30eb\u306aGET\u30ea\u30af\u30a8\u30b9\u30c8\n$url = 'https:\/\/api.example.com\/data';\n$response = file_get_contents($url);\n\nif ($response !== false) {\n    \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406\n    $data = json_decode($response, true);\n    print_r($data);\n} else {\n    echo \"\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\\n\";\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-145\">\u30b9\u30c8\u30ea\u30fc\u30e0\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u305f\u9ad8\u5ea6\u306a\u8a2d\u5b9a<\/h4>\n\n\n\n<p>\u30b9\u30c8\u30ea\u30fc\u30e0\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u3088\u308a\u591a\u304f\u306eHTTP\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/api.example.com\/data';\n\n\/\/ HTTP\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\n$options = [\n    'http' =&gt; [\n        'method' =&gt; 'POST',\n        'header' =&gt; [\n            'Content-Type: application\/json',\n            'User-Agent: PHPScript\/1.0',\n            'Authorization: Bearer your_token_here'\n        ],\n        'content' =&gt; json_encode(['name' =&gt; 'John', 'email' =&gt; 'john@example.com']),\n        'timeout' =&gt; 30,\n        'ignore_errors' =&gt; true  \/\/ \u30a8\u30e9\u30fc\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\n    ],\n    'ssl' =&gt; [\n        'verify_peer' =&gt; true,\n        'verify_peer_name' =&gt; true\n    ]\n];\n\n\/\/ \u30b9\u30c8\u30ea\u30fc\u30e0\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u4f5c\u6210\n$context = stream_context_create($options);\n\n\/\/ \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\n$response = file_get_contents($url, false, $context);\n\n\/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc\u60c5\u5831\u3092\u53d6\u5f97\n$responseHeaders = $http_response_header ?? [];\n\n\/\/ \u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u306e\u62bd\u51fa\n$statusLine = $responseHeaders[0] ?? '';\npreg_match('\/HTTP\\\/\\d\\.\\d\\s+(\\d+)\/', $statusLine, $matches);\n$statusCode = $matches[1] ?? null;\n\necho \"\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9: {$statusCode}\\n\";\necho \"\u30ec\u30b9\u30dd\u30f3\u30b9\u5185\u5bb9: {$response}\\n\";\n\n\/\/ JSON\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406\nif ($response !== false) {\n    $data = json_decode($response, true);\n    print_r($data);\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-146\">file_get_contents()\u306e\u9577\u6240<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30b7\u30f3\u30d7\u30eb\u3055<\/strong>\uff1a\u8ffd\u52a0\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u304c\u4e0d\u8981\u3067\u3001\u30b3\u30fc\u30c9\u304c\u7c21\u6f54\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u8efd\u91cf<\/strong>\uff1a\u8ffd\u52a0\u306e\u4f9d\u5b58\u95a2\u4fc2\u304c\u306a\u3044\u305f\u3081\u3001\u5c0f\u3055\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3084\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4e00\u90e8<\/strong>\uff1aPHP\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4e00\u90e8\u3067\u3042\u308b\u305f\u3081\u3001\u5e38\u306b\u5229\u7528\u53ef\u80fd\u3067\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-147\">file_get_contents()\u306e\u77ed\u6240<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6a5f\u80fd\u306e\u5236\u9650<\/strong>\uff1a\u9ad8\u5ea6\u306a\u6a5f\u80fd\uff08OAuth\u8a8d\u8a3c\u3001\u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u30ea\u30af\u30a8\u30b9\u30c8\u3001\u30af\u30c3\u30ad\u30fc\u7ba1\u7406\u306a\u3069\uff09\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u9650\u3089\u308c\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u304c\u5f31\u3044<\/strong>\uff1a\u8a73\u7d30\u306a\u30a8\u30e9\u30fc\u60c5\u5831\u304c\u53d6\u5f97\u3057\u306b\u304f\u304f\u3001\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u304c\u8ca7\u5f31\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>SSL\u8a3c\u660e\u66f8\u306e\u691c\u8a3c\u5236\u5fa1\u304c\u9650\u5b9a\u7684<\/strong>\uff1acURL\u3068\u6bd4\u8f03\u3057\u3066SSL\u8a3c\u660e\u66f8\u306e\u691c\u8a3c\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u5c11\u306a\u3044\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>\u975e\u540c\u671f\u51e6\u7406\u975e\u5bfe\u5fdc<\/strong>\uff1a\u4e26\u5217\u30ea\u30af\u30a8\u30b9\u30c8\u3084\u975e\u540c\u671f\u51e6\u7406\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002<\/li>\n\n\n\n<li><strong>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u5236\u5fa1\u306e\u5236\u9650<\/strong>\uff1a\u63a5\u7d9a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3068\u5b9f\u884c\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3092\u5206\u3051\u3066\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-148\">\u72b6\u6cc1\u306b\u5fdc\u3058\u305f\u6700\u9069\u306a\u9078\u629e\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u3069\u306eHTTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3092\u9078\u3076\u304b\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8981\u4ef6\u3084\u72b6\u6cc1\u306b\u3088\u3063\u3066\u7570\u306a\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306b\u3001\u72b6\u6cc1\u5225\u306e\u9078\u629e\u6307\u91dd\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-149\">cURL\u3092\u9078\u3076\u3079\u304d\u72b6\u6cc1<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6700\u5927\u9650\u306e\u5236\u5fa1\u304c\u5fc5\u8981\u306a\u5834\u5408<\/strong>\uff1a\u4f4e\u30ec\u30d9\u30eb\u306eHTTP\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u7d30\u304b\u304f\u5236\u5fa1\u3057\u305f\u3044\u5834\u5408\u3002<\/li>\n\n\n\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u91cd\u8981\u306a\u5834\u5408<\/strong>\uff1a\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u3092\u6700\u5c0f\u9650\u306b\u6291\u3048\u305f\u3044\u5834\u5408\u3002<\/li>\n\n\n\n<li><strong>\u7279\u6b8a\u306a\u30d7\u30ed\u30c8\u30b3\u30eb\u3084\u6a5f\u80fd\u304c\u5fc5\u8981\u306a\u5834\u5408<\/strong>\uff1aFTP\u3001LDAP\u3001SMTP\u306a\u3069\u3001\u4ed6\u306e\u30d7\u30ed\u30c8\u30b3\u30eb\u306b\u3082\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3002<\/li>\n\n\n\n<li><strong>\u4e26\u5217\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u5fc5\u8981\u3060\u304c\u3001\u5916\u90e8\u4f9d\u5b58\u95a2\u4fc2\u3092\u907f\u3051\u305f\u3044\u5834\u5408<\/strong>\uff1a<code>curl_multi_*<\/code>\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u4e26\u5217\u51e6\u7406\u3092\u5b9f\u88c5\u3057\u305f\u3044\u5834\u5408\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ cURL\u306e\u9078\u629e\u4f8b\uff1a\u8907\u96d1\u306a\u30ea\u30af\u30a8\u30b9\u30c8\u5236\u5fa1\u304c\u5fc5\u8981\u306a\u5834\u5408\n$ch = curl_init();\ncurl_setopt_array($ch, [\n    CURLOPT_URL =&gt; 'https:\/\/api.example.com\/data',\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_FOLLOWLOCATION =&gt; true,\n    CURLOPT_MAXREDIRS =&gt; 5,\n    CURLOPT_CONNECTTIMEOUT =&gt; 3,\n    CURLOPT_TIMEOUT =&gt; 30,\n    CURLOPT_HTTP_VERSION =&gt; CURL_HTTP_VERSION_2_0,\n    CURLOPT_TCP_KEEPALIVE =&gt; 1,\n    \/\/ ...\u305d\u306e\u4ed6\u591a\u6570\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\n]);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-150\">Guzzle\u3092\u9078\u3076\u3079\u304d\u72b6\u6cc1<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30e2\u30c0\u30f3\u306a\u958b\u767a\u30b9\u30bf\u30a4\u30eb\u3092\u597d\u3080\u5834\u5408<\/strong>\uff1a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u3067\u8aad\u307f\u3084\u3059\u3044\u30b3\u30fc\u30c9\u3092\u66f8\u304d\u305f\u3044\u5834\u5408\u3002<\/li>\n\n\n\n<li><strong>\u30c1\u30fc\u30e0\u958b\u767a\u306e\u5834\u5408<\/strong>\uff1a\u6a19\u6e96\u5316\u3055\u308c\u305f\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3068\u660e\u78ba\u306aAPI\u306b\u3088\u3063\u3066\u3001\u30c1\u30fc\u30e0\u3067\u306e\u958b\u767a\u52b9\u7387\u3092\u9ad8\u3081\u305f\u3044\u5834\u5408\u3002<\/li>\n\n\n\n<li><strong>\u30c6\u30b9\u30c8\u5bb9\u6613\u6027\u304c\u91cd\u8981\u306a\u5834\u5408<\/strong>\uff1a\u5358\u4f53\u30c6\u30b9\u30c8\u3092\u7c21\u5358\u306b\u66f8\u3051\u308b\u3088\u3046\u306b\u3057\u305f\u3044\u5834\u5408\u3002<\/li>\n\n\n\n<li><strong>\u8907\u96d1\u306a\u30ea\u30af\u30a8\u30b9\u30c8\/\u30ec\u30b9\u30dd\u30f3\u30b9\u51e6\u7406\u304c\u5fc5\u8981\u306a\u5834\u5408<\/strong>\uff1a\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u4f7f\u7528\u3057\u3066\u51e6\u7406\u306e\u6d41\u308c\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u305f\u3044\u5834\u5408\u3002<\/li>\n\n\n\n<li><strong>\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u3057\u3066\u306e\u518d\u5229\u7528\u304c\u76ee\u7684\u306e\u5834\u5408<\/strong>\uff1a\u4ed6\u306e\u958b\u767a\u8005\u304c\u4f7f\u7528\u3059\u308b\u30e9\u30a4\u30d6\u30e9\u30ea\u3084\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u958b\u767a\u3057\u3066\u3044\u308b\u5834\u5408\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ Guzzle\u306e\u9078\u629e\u4f8b\uff1aOAuth\u8a8d\u8a3c\u3068JSON\u30ec\u30b9\u30dd\u30f3\u30b9\u51e6\u7406\nrequire 'vendor\/autoload.php';\n\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\RequestOptions;\n\n$client = new Client(['base_uri' =&gt; 'https:\/\/api.example.com\/']);\n\n$response = $client-&gt;post('oauth\/token', [\n    RequestOptions::FORM_PARAMS =&gt; [\n        'grant_type' =&gt; 'client_credentials',\n        'client_id' =&gt; 'your_client_id',\n        'client_secret' =&gt; 'your_client_secret',\n    ]\n]);\n\n$token = json_decode($response-&gt;getBody(), true)['access_token'];\n\n\/\/ \u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u7528\u3057\u3066\u5225\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u884c\u3046\n$userData = $client-&gt;get('users\/me', [\n    RequestOptions::HEADERS =&gt; [\n        'Authorization' =&gt; 'Bearer ' . $token\n    ]\n])-&gt;getBody()-&gt;getContents();\n\necho $userData;\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-151\">file_get_contents()\u3092\u9078\u3076\u3079\u304d\u72b6\u6cc1<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30b7\u30f3\u30d7\u30eb\u306aGET\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u307f\u306e\u5834\u5408<\/strong>\uff1a\u8907\u96d1\u306a\u6a5f\u80fd\u304c\u4e0d\u8981\u3067\u3001\u5358\u7d14\u306a\u30c7\u30fc\u30bf\u53d6\u5f97\u306e\u307f\u3092\u884c\u3046\u5834\u5408\u3002<\/li>\n\n\n\n<li><strong>\u6700\u5c0f\u9650\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u7dad\u6301\u3057\u305f\u3044\u5834\u5408<\/strong>\uff1a\u8ffd\u52a0\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u907f\u3051\u305f\u3044\u5c0f\u898f\u6a21\u30b9\u30af\u30ea\u30d7\u30c8\u3084\u4e00\u6642\u7684\u306a\u30b9\u30af\u30ea\u30d7\u30c8\u3002<\/li>\n\n\n\n<li><strong>\u5171\u6709\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u74b0\u5883\u3067\u3001cURL\u304c\u5229\u7528\u3067\u304d\u306a\u3044\u5834\u5408<\/strong>\uff1a\u4e00\u90e8\u306e\u5171\u6709\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u3067\u306fcURL\u62e1\u5f35\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u30dd\u30fc\u30bf\u30d3\u30ea\u30c6\u30a3\u304c\u91cd\u8981\u306a\u5834\u5408<\/strong>\uff1a\u7570\u306a\u308b\u74b0\u5883\u9593\u3067\u306e\u4e92\u63db\u6027\u3092\u6700\u5927\u5316\u3057\u305f\u3044\u5834\u5408\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/\/ file_get_contents()\u306e\u9078\u629e\u4f8b\uff1a\u30b7\u30f3\u30d7\u30eb\u306aAPI\u30c1\u30a7\u30c3\u30af\n$apiEndpoint = 'https:\/\/api.example.com\/status';\n\n\/\/ \u7c21\u6613\u7684\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u51e6\u7406\n$cacheFile = 'api_status_cache.txt';\n$cacheExpiry = 300; \/\/ 5\u5206\n\nif (file_exists($cacheFile) &amp;&amp; (time() - filemtime($cacheFile) &lt; $cacheExpiry)) {\n    \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u304b\u3089\u8aad\u307f\u8fbc\u307f\n    $status = file_get_contents($cacheFile);\n    echo \"API\u30b9\u30c6\u30fc\u30bf\u30b9 (\u30ad\u30e3\u30c3\u30b7\u30e5): $status\\n\";\n} else {\n    \/\/ API\u304b\u3089\u76f4\u63a5\u53d6\u5f97\n    $status = @file_get_contents($apiEndpoint);\n    \n    if ($status !== false) {\n        \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u66f4\u65b0\n        file_put_contents($cacheFile, $status);\n        echo \"API\u30b9\u30c6\u30fc\u30bf\u30b9 (\u65b0\u898f\u53d6\u5f97): $status\\n\";\n    } else {\n        echo \"API\u3078\u306e\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\\n\";\n    }\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-152\">\u9078\u629e\u306e\u305f\u3081\u306e\u610f\u601d\u6c7a\u5b9a\u30d5\u30ed\u30fc<\/h4>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u6700\u9069\u306aHTTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3092\u9078\u629e\u3059\u308b\u305f\u3081\u306e\u7c21\u5358\u306a\u610f\u601d\u6c7a\u5b9a\u30d5\u30ed\u30fc\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5fc5\u8981\u306a\u6a5f\u80fd\u3092\u78ba\u8a8d<\/strong>\uff1a\u3069\u306e\u3088\u3046\u306a\u6a5f\u80fd\uff08\u8a8d\u8a3c\u3001\u975e\u540c\u671f\u51e6\u7406\u3001\u30d5\u30a1\u30a4\u30eb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306a\u3069\uff09\u304c\u5fc5\u8981\u304b\u30ea\u30b9\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u74b0\u5883\u306e\u5236\u7d04\u3092\u78ba\u8a8d<\/strong>\uff1acURL\u62e1\u5f35\u304c\u5229\u7528\u53ef\u80fd\u304b\u3001Composer\u304c\u4f7f\u7528\u3067\u304d\u308b\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u6027\u8cea\u3092\u8003\u616e<\/strong>\uff1a\u898f\u6a21\u3001\u9577\u671f\u4fdd\u5b88\u306e\u5fc5\u8981\u6027\u3001\u30c1\u30fc\u30e0\u898f\u6a21\u306a\u3069\u3092\u8003\u616e\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u4ee5\u4e0b\u306e\u5224\u65ad\u3067\u9078\u629e<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li>\u8907\u96d1\u306a\u8981\u4ef6\u3001\u9577\u671f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30c1\u30fc\u30e0\u958b\u767a \u2192 <strong>Guzzle<\/strong><\/li>\n\n\n\n<li>\u6700\u5927\u9650\u306e\u5236\u5fa1\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9 \u2192 <strong>cURL<\/strong><\/li>\n\n\n\n<li>\u30b7\u30f3\u30d7\u30eb\u306a\u8981\u4ef6\u3001\u30df\u30cb\u30de\u30eb\u306a\u4f9d\u5b58\u95a2\u4fc2 \u2192 <strong>file_get_contents()<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-153\">\u4ed6\u306e\u4ee3\u66ff\u624b\u6bb5<\/h3>\n\n\n\n<p>\u4e0a\u8a18\u306e3\u3064\u306e\u9078\u629e\u80a2\u4ee5\u5916\u306b\u3082\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u4ee3\u66ff\u624b\u6bb5\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Symfony HttpClient<\/strong>\uff1aSymfony\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3001\u975e\u540c\u671f\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u512a\u308c\u305f\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>PHP-HTTP<\/strong>\uff1aHTTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u62bd\u8c61\u5316\u30ec\u30a4\u30e4\u30fc\u3067\u3001\u7570\u306a\u308bHTTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u9593\u306e\u5207\u308a\u66ff\u3048\u3092\u5bb9\u6613\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>React HTTP<\/strong>\uff1a\u30a4\u30d9\u30f3\u30c8\u99c6\u52d5\u578b\u306eHTTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3067\u3001\u975e\u540c\u671f\u51e6\u7406\u306b\u7279\u5316\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>Artax<\/strong>\uff1a\u975e\u540c\u671fHTTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3067\u3001Amphp\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u306e\u4e00\u90e8\u3067\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u305d\u308c\u305e\u308c\u306b\u56fa\u6709\u306e\u9577\u6240\u3068\u77ed\u6240\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u4e00\u822c\u7684\u306b\u306fcURL\u3001Guzzle\u3001file_get_contents()\u306e3\u3064\u306e\u9078\u629e\u80a2\u3067\u591a\u304f\u306e\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3092\u30ab\u30d0\u30fc\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-154\">\u307e\u3068\u3081<\/h3>\n\n\n\n<p>PHP\u3067HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u884c\u3046\u305f\u3081\u306e\u4e3b\u8981\u306a\u65b9\u6cd5\u3092\u6bd4\u8f03\u3059\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff1a<\/p>\n\n\n<div id=\"id-6b119e86-d265-43ea-9931-1d1f18a8fafd\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u7279\u6027<\/th><th>cURL<\/th><th>Guzzle<\/th><th>file_get_contents()<\/th><\/tr><\/thead><tbody><tr><td>\u6a5f\u80fd\u6027<\/td><td>\u9ad8<\/td><td>\u9ad8<\/td><td>\u4f4e<\/td><\/tr><tr><td>\u4f7f\u3044\u3084\u3059\u3055<\/td><td>\u4e2d<\/td><td>\u9ad8<\/td><td>\u9ad8<\/td><\/tr><tr><td>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9<\/td><td>\u9ad8<\/td><td>\u4e2d\u301c\u9ad8<\/td><td>\u4e2d<\/td><\/tr><tr><td>\u4f9d\u5b58\u95a2\u4fc2<\/td><td>PHP\u62e1\u5f35\u306e\u307f<\/td><td>Composer\/\u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea<\/td><td>\u4e0d\u8981\uff08PHP\u6a19\u6e96\uff09<\/td><\/tr><tr><td>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/td><td>\u4e2d<\/td><td>\u9ad8<\/td><td>\u4f4e<\/td><\/tr><tr><td>\u975e\u540c\u671f\/\u4e26\u5217\u51e6\u7406<\/td><td>\u5bfe\u5fdc<\/td><td>\u5bfe\u5fdc<\/td><td>\u975e\u5bfe\u5fdc<\/td><\/tr><tr><td>\u5b66\u7fd2\u66f2\u7dda<\/td><td>\u4e2d<\/td><td>\u4e2d\u301c\u9ad8<\/td><td>\u4f4e<\/td><\/tr><tr><td>\u30b3\u30fc\u30c9\u4fdd\u5b88\u6027<\/td><td>\u4e2d<\/td><td>\u9ad8<\/td><td>\u4f4e\u301c\u4e2d<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u3069\u306e\u65b9\u6cd5\u3092\u9078\u3076\u306b\u305b\u3088\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff08SSL\u8a3c\u660e\u66f8\u306e\u691c\u8a3c\u3001\u5165\u529b\u306e\u30b5\u30cb\u30bf\u30a4\u30ba\u306a\u3069\uff09\u306b\u5f93\u3046\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u307e\u305f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8981\u4ef6\u3001\u958b\u767a\u30c1\u30fc\u30e0\u306e\u30b9\u30ad\u30eb\u30bb\u30c3\u30c8\u3001\u305d\u3057\u3066\u5c06\u6765\u306e\u4fdd\u5b88\u6027\u3092\u8003\u616e\u3057\u3066\u9078\u629e\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u6700\u7d42\u7684\u306b\u306f\u3001\u5404\u65b9\u6cd5\u306e\u9577\u6240\u3068\u77ed\u6240\u3092\u7406\u89e3\u3057\u3001\u72b6\u6cc1\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u30c4\u30fc\u30eb\u3092\u9078\u3076\u3053\u3068\u304c\u3001\u52b9\u7387\u7684\u306aPHP\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306e\u9375\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-155\">\u3088\u304f\u3042\u308b\u30a8\u30e9\u30fc\u3068\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/h2>\n\n\n\n<p>PHP\u306ecURL\u3092\u4f7f\u7528\u3059\u308b\u969b\u3001\u69d8\u3005\u306a\u30a8\u30e9\u30fc\u306b\u906d\u9047\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001\u3088\u304f\u767a\u751f\u3059\u308bcURL\u30a8\u30e9\u30fc\u306e\u539f\u56e0\u3068\u89e3\u6c7a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002\u9069\u5207\u306a\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u624b\u6cd5\u3092\u8eab\u306b\u3064\u3051\u308b\u3053\u3068\u3067\u3001\u554f\u984c\u306e\u8fc5\u901f\u306a\u89e3\u6c7a\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-156\">\u63a5\u7d9a\u30a8\u30e9\u30fc\u306e\u539f\u56e0\u3068\u89e3\u6c7a\u7b56<\/h3>\n\n\n\n<p>\u63a5\u7d9a\u30a8\u30e9\u30fc\u306f\u3001cURL\u304c\u76ee\u7684\u306e\u30b5\u30fc\u30d0\u30fc\u3068\u901a\u4fe1\u3092\u78ba\u7acb\u3067\u304d\u306a\u3044\u5834\u5408\u306b\u767a\u751f\u3057\u307e\u3059\u3002\u4e3b\u306a\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-157\">\u3088\u304f\u3042\u308b\u63a5\u7d9a\u30a8\u30e9\u30fc\u306e\u7a2e\u985e<\/h4>\n\n\n<div id=\"id-79fcae5e-5fa6-4ffe-b275-5c91ddad9ee8\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9<\/th><th>cURL\u5b9a\u6570<\/th><th>\u8aac\u660e<\/th><th>\u4e3b\u306a\u539f\u56e0<\/th><\/tr><\/thead><tbody><tr><td>6<\/td><td>CURLE_COULDNT_RESOLVE_HOST<\/td><td>\u30db\u30b9\u30c8\u540d\u3092\u89e3\u6c7a\u3067\u304d\u306a\u3044<\/td><td>DNS\u554f\u984c<\/td><\/tr><tr><td>7<\/td><td>CURLE_COULDNT_CONNECT<\/td><td>\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3067\u304d\u306a\u3044<\/td><td>\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u3001\u30b5\u30fc\u30d0\u30fc\u30c0\u30a6\u30f3<\/td><\/tr><tr><td>28<\/td><td>CURLE_OPERATION_TIMEDOUT<\/td><td>\u64cd\u4f5c\u304c\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3057\u305f<\/td><td>\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u9045\u5ef6\u3001\u30b5\u30fc\u30d0\u30fc\u5fdc\u7b54\u306a\u3057<\/td><\/tr><tr><td>35<\/td><td>CURLE_SSL_CONNECT_ERROR<\/td><td>SSL\u63a5\u7d9a\u30a8\u30e9\u30fc<\/td><td>SSL\/TLS\u8a2d\u5b9a\u306e\u554f\u984c<\/td><\/tr><tr><td>56<\/td><td>CURLE_RECV_ERROR<\/td><td>\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u53d7\u4fe1\u30a8\u30e9\u30fc<\/td><td>\u63a5\u7d9a\u304c\u7a81\u7136\u5207\u65ad\u3055\u308c\u305f<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"i-158\">\u63a5\u7d9a\u30a8\u30e9\u30fc\u306e\u8a3a\u65ad\u3068\u89e3\u6c7a\u65b9\u6cd5<\/h4>\n\n\n\n<p><strong>1. CURLE_COULDNT_RESOLVE_HOST\uff08\u30db\u30b9\u30c8\u540d\u89e3\u6c7a\u30a8\u30e9\u30fc\uff09\u306e\u5bfe\u51e6\u6cd5<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$ch = curl_init('https:\/\/non-existent-domain.example.com');\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$response = curl_exec($ch);\n\nif ($response === false) {\n    $errno = curl_errno($ch);\n    if ($errno == CURLE_COULDNT_RESOLVE_HOST) {\n        echo \"\u30db\u30b9\u30c8\u540d\u89e3\u6c7a\u30a8\u30e9\u30fc: \" . curl_error($ch) . \"\\n\";\n        \n        \/\/ \u554f\u984c\u306e\u8a3a\u65ad\n        echo \"\u30c9\u30e1\u30a4\u30f3\u540d\u306e\u691c\u8a3c:\\n\";\n        echo \"- \u30c9\u30e1\u30a4\u30f3\u540d\u306e\u30b9\u30da\u30eb\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\\n\";\n        echo \"- \u30b7\u30b9\u30c6\u30e0\u306eDNS\u8a2d\u5b9a\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\\n\";\n        \n        \/\/ nslookup\u30b3\u30de\u30f3\u30c9\u3067\u78ba\u8a8d\uff08Linux\/Mac\/Windows\uff09\n        $domain = parse_url('https:\/\/non-existent-domain.example.com', PHP_URL_HOST);\n        echo \"nslookup\u30b3\u30de\u30f3\u30c9\u306e\u7d50\u679c: \\n\";\n        echo shell_exec(\"nslookup $domain\");\n        \n        \/\/ \u4ee3\u66ffDNS\u8a2d\u5b9a\u306e\u63d0\u6848\n        echo \"DNS\u30b5\u30fc\u30d0\u30fc\u3092\u660e\u793a\u7684\u306b\u6307\u5b9a\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\uff08\u4f8b: Google DNS 8.8.8.8\uff09\\n\";\n    }\n}\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<p><strong>\u89e3\u6c7a\u7b56<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c9\u30e1\u30a4\u30f3\u540d\u306e\u30b9\u30da\u30eb\u30df\u30b9\u304c\u306a\u3044\u304b\u78ba\u8a8d<\/li>\n\n\n\n<li>\u30b7\u30b9\u30c6\u30e0\u306eDNS\u8a2d\u5b9a\u304c\u6b63\u3057\u3044\u304b\u78ba\u8a8d<\/li>\n\n\n\n<li><code>\/etc\/hosts<\/code>\u30d5\u30a1\u30a4\u30eb\uff08Windows: <code>C:\\Windows\\System32\\drivers\\etc\\hosts<\/code>\uff09\u306b\u6b63\u3057\u3044\u30a8\u30f3\u30c8\u30ea\u304c\u3042\u308b\u304b\u78ba\u8a8d<\/li>\n\n\n\n<li>\u4e00\u6642\u7684\u306aDNS\u554f\u984c\u306e\u5834\u5408\u306f\u3001\u5c11\u3057\u6642\u9593\u3092\u304a\u3044\u3066\u518d\u8a66\u884c<\/li>\n\n\n\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5DNS\u30b5\u30fc\u30d0\u30fc\u306e\u4f7f\u7528\u3092\u691c\u8a0e<\/li>\n<\/ul>\n\n\n\n<p><strong>2. CURLE_COULDNT_CONNECT\uff08\u63a5\u7d9a\u30a8\u30e9\u30fc\uff09\u306e\u5bfe\u51e6\u6cd5<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$url = 'https:\/\/api.example.com';\n$ch = curl_init($url);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$response = curl_exec($ch);\n\nif ($response === false) {\n    $errno = curl_errno($ch);\n    if ($errno == CURLE_COULDNT_CONNECT) {\n        echo \"\u63a5\u7d9a\u30a8\u30e9\u30fc: \" . curl_error($ch) . \"\\n\";\n        \n        \/\/ \u63a5\u7d9a\u60c5\u5831\u3092\u53d6\u5f97\n        $urlParts = parse_url($url);\n        $host = $urlParts['host'] ?? '';\n        $port = $urlParts['port'] ?? ($urlParts['scheme'] == 'https' ? 443 : 80);\n        \n        \/\/ telnet\u3067\u63a5\u7d9a\u30c6\u30b9\u30c8\uff08Linux\/Mac\uff09\n        echo \"telnet\u306b\u3088\u308b\u63a5\u7d9a\u30c6\u30b9\u30c8:\\n\";\n        echo shell_exec(\"timeout 5 telnet $host $port 2&gt;&amp;1\");\n        \n        \/\/ ping\u3067\u30b5\u30fc\u30d0\u30fc\u6b7b\u6d3b\u78ba\u8a8d\n        echo \"ping\u306b\u3088\u308b\u30b5\u30fc\u30d0\u30fc\u5fdc\u7b54\u78ba\u8a8d:\\n\";\n        echo shell_exec(\"ping -c 4 $host 2&gt;&amp;1\");\n        \n        \/\/ \u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u8a2d\u5b9a\u306e\u78ba\u8a8d\u65b9\u6cd5\u3092\u8868\u793a\n        echo \"\u8003\u3048\u3089\u308c\u308b\u539f\u56e0:\\n\";\n        echo \"- \u30b5\u30fc\u30d0\u30fc\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u308b\\n\";\n        echo \"- \u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u306b\u3088\u3063\u3066\u30dd\u30fc\u30c8{$port}\u304c\u30d6\u30ed\u30c3\u30af\u3055\u308c\u3066\u3044\u308b\\n\";\n        echo \"- \u30d7\u30ed\u30ad\u30b7\u8a2d\u5b9a\u304c\u5fc5\u8981\u3060\u304c\u672a\u8a2d\u5b9a\\n\";\n    }\n}\ncurl_close($ch);\n?&gt;\n<\/pre>\n\n\n\n<p><strong>\u89e3\u6c7a\u7b56<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b5\u30fc\u30d0\u30fc\u304c\u7a3c\u50cd\u3057\u3066\u3044\u308b\u304b\u78ba\u8a8d<\/li>\n\n\n\n<li>\u30dd\u30fc\u30c8\u304c\u958b\u653e\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\uff08\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u8a2d\u5b9a\uff09<\/li>\n\n\n\n<li>\u30d7\u30ed\u30ad\u30b7\u304c\u5fc5\u8981\u306a\u5834\u5408\u3001CURLOPT_PROXY\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u4e00\u6642\u7684\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u554f\u984c\u306e\u5834\u5408\u3001\u518d\u8a66\u884c\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u5b9f\u88c5<\/li>\n<\/ul>\n\n\n\n<p><strong>3. \u6c4e\u7528\u7684\u306a\u63a5\u7d9a\u30a8\u30e9\u30fc\u8a3a\u65ad\u30c4\u30fc\u30eb<\/strong><\/p>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u3001\u63a5\u7d9a\u554f\u984c\u3092\u8a3a\u65ad\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction diagnoseConnectionIssue($url) {\n    echo \"URL '{$url}' \u3078\u306e\u63a5\u7d9a\u554f\u984c\u3092\u8a3a\u65ad\u3057\u3066\u3044\u307e\u3059...\\n\";\n    \n    \/\/ \u57fa\u672c\u7684\u306aURL\u89e3\u6790\n    $parsedUrl = parse_url($url);\n    if ($parsedUrl === false) {\n        echo \"\u26a0\ufe0f \u7121\u52b9\u306aURL\u5f62\u5f0f\u3067\u3059\u3002\u6b63\u3057\u3044URL\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\\n\";\n        return;\n    }\n    \n    $host = $parsedUrl['host'] ?? '';\n    $scheme = $parsedUrl['scheme'] ?? '';\n    $port = $parsedUrl['port'] ?? ($scheme == 'https' ? 443 : 80);\n    \n    echo \"\u30db\u30b9\u30c8: {$host}\\n\";\n    echo \"\u30d7\u30ed\u30c8\u30b3\u30eb: {$scheme}\\n\";\n    echo \"\u30dd\u30fc\u30c8: {$port}\\n\\n\";\n    \n    \/\/ DNS\u89e3\u6c7a\u30c1\u30a7\u30c3\u30af\n    echo \"1. DNS\u30db\u30b9\u30c8\u540d\u89e3\u6c7a\u30c1\u30a7\u30c3\u30af...\\n\";\n    $ip = gethostbyname($host);\n    if ($ip == $host) {\n        echo \"\u274c DNS\u30db\u30b9\u30c8\u540d\u89e3\u6c7a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\\n\";\n        echo \"   - \u30c9\u30e1\u30a4\u30f3\u540d\u306e\u30b9\u30da\u30eb\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\\n\";\n        echo \"   - DNS\u8a2d\u5b9a\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\\n\\n\";\n    } else {\n        echo \"\u2705 DNS\u30db\u30b9\u30c8\u540d\u89e3\u6c7a\u6210\u529f: {$ip}\\n\\n\";\n    }\n    \n    \/\/ \u30dd\u30fc\u30c8\u63a5\u7d9a\u30c6\u30b9\u30c8\n    echo \"2. \u30dd\u30fc\u30c8\u63a5\u7d9a\u30c6\u30b9\u30c8...\\n\";\n    $socket = @fsockopen($host, $port, $errno, $errstr, 5);\n    if (!$socket) {\n        echo \"\u274c \u30dd\u30fc\u30c8{$port}\u3078\u306e\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {$errstr} ({$errno})\\n\";\n        echo \"   - \u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u304c\u30dd\u30fc\u30c8\u3092\u30d6\u30ed\u30c3\u30af\u3057\u3066\u3044\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\\n\";\n        echo \"   - \u30b5\u30fc\u30d0\u30fc\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\\n\\n\";\n    } else {\n        fclose($socket);\n        echo \"\u2705 \u30dd\u30fc\u30c8{$port}\u3078\u306e\u63a5\u7d9a\u6210\u529f\\n\\n\";\n    }\n    \n    \/\/ HTTP\u63a5\u7d9a\u30c6\u30b9\u30c8\n    echo \"3. HTTP\u63a5\u7d9a\u30c6\u30b9\u30c8...\\n\";\n    $ch = curl_init($url);\n    curl_setopt_array($ch, [\n        CURLOPT_RETURNTRANSFER =&gt; true,\n        CURLOPT_NOBODY =&gt; true,\n        CURLOPT_TIMEOUT =&gt; 10,\n        CURLOPT_SSL_VERIFYPEER =&gt; false,  \/\/ \u8a3a\u65ad\u76ee\u7684\u306e\u307f\n        CURLOPT_SSL_VERIFYHOST =&gt; 0,      \/\/ \u8a3a\u65ad\u76ee\u7684\u306e\u307f\n        CURLOPT_VERBOSE =&gt; true\n    ]);\n    \n    $output = fopen('php:\/\/temp', 'w+');\n    curl_setopt($ch, CURLOPT_STDERR, $output);\n    \n    $response = curl_exec($ch);\n    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n    \n    rewind($output);\n    $verboseLog = stream_get_contents($output);\n    \n    if ($response === false) {\n        echo \"\u274c HTTP\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f: \" . curl_error($ch) . \" (\" . curl_errno($ch) . \")\\n\";\n        echo \"\u8a73\u7d30\u306a\u30c7\u30d0\u30c3\u30b0\u60c5\u5831:\\n\" . $verboseLog . \"\\n\";\n    } else {\n        echo \"\u2705 HTTP\u63a5\u7d9a\u6210\u529f (\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9: {$httpCode})\\n\";\n    }\n    \n    curl_close($ch);\n}\n\n\/\/ \u4f7f\u7528\u4f8b\ndiagnoseConnectionIssue('https:\/\/api.example.com\/endpoint');\n?&gt;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-159\">\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u30a8\u30e9\u30fc\u3078\u306e\u5bfe\u51e6\u6cd5<\/h3>\n\n\n\n<p>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u30a8\u30e9\u30fc\uff08CURLE_OPERATION_TIMEDOUT\u3001\u30a8\u30e9\u30fc\u30b3\u30fc\u30c928\uff09\u306f\u3001\u6307\u5b9a\u3057\u305f\u6642\u9593\u5185\u306b\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u5b8c\u4e86\u3057\u306a\u304b\u3063\u305f\u5834\u5408\u306b\u767a\u751f\u3057\u307e\u3059\u3002\u3053\u306e\u30a8\u30e9\u30fc\u306b\u306f\u3055\u307e\u3056\u307e\u306a\u539f\u56e0\u304c\u8003\u3048\u3089\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-160\">\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u304c\u767a\u751f\u3059\u308b\u4e00\u822c\u7684\u306a\u539f\u56e0<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u9045\u5ef6<\/strong>\uff1a\u4f4e\u901f\u307e\u305f\u306f\u4e0d\u5b89\u5b9a\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u63a5\u7d9a<\/li>\n\n\n\n<li><strong>\u30b5\u30fc\u30d0\u30fc\u306e\u5fdc\u7b54\u304c\u9045\u3044<\/strong>\uff1a\u30b5\u30fc\u30d0\u30fc\u8ca0\u8377\u304c\u9ad8\u3044\u3001\u307e\u305f\u306f\u51e6\u7406\u6642\u9593\u306e\u9577\u3044\u30ea\u30af\u30a8\u30b9\u30c8<\/li>\n\n\n\n<li><strong>\u4e0d\u9069\u5207\u306a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a<\/strong>\uff1a\u51e6\u7406\u306b\u5fc5\u8981\u306a\u6642\u9593\u3088\u308a\u3082\u77ed\u3044\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u5024<\/li>\n\n\n\n<li><strong>DNS\u89e3\u6c7a\u306e\u9045\u5ef6<\/strong>\uff1aDNS\u89e3\u6c7a\u306b\u6642\u9593\u304c\u304b\u304b\u3063\u3066\u3044\u308b<\/li>\n\n\n\n<li><strong>\u30d7\u30ed\u30ad\u30b7\u306e\u554f\u984c<\/strong>\uff1a\u30d7\u30ed\u30ad\u30b7\u30b5\u30fc\u30d0\u30fc\u306e\u5fdc\u7b54\u304c\u9045\u3044<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-161\">\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a\u306e\u6700\u9069\u5316<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction makeRequestWithOptimizedTimeouts($url, $data = null) {\n    $ch = curl_init();\n    \n    $options = [\n        CURLOPT_URL =&gt; $url,\n        CURLOPT_RETURNTRANSFER =&gt; true,\n        \n        \/\/ \u63a5\u7d9a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\uff08\u30b5\u30fc\u30d0\u30fc\u3078\u306e\u63a5\u7d9a\u78ba\u7acb\u307e\u3067\u306e\u6642\u9593\uff09\n        CURLOPT_CONNECTTIMEOUT =&gt; 5,\n        \n        \/\/ \u51e6\u7406\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\uff08\u30ea\u30af\u30a8\u30b9\u30c8\u5168\u4f53\u306e\u6700\u5927\u5b9f\u884c\u6642\u9593\uff09\n        CURLOPT_TIMEOUT =&gt; 30,\n        \n        \/\/ DNS\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\uff08\u79d2\uff09\n        CURLOPT_DNS_CACHE_TIMEOUT =&gt; 120,\n        \n        \/\/ \u4f4e\u901f\u6642\u306e\u5236\u9650\uff08\u30d0\u30a4\u30c8\/\u79d2\uff09\n        CURLOPT_LOW_SPEED_LIMIT =&gt; 500,\n        \n        \/\/ \u4f4e\u901f\u72b6\u614b\u306e\u6700\u5927\u7d99\u7d9a\u6642\u9593\uff08\u79d2\uff09\n        CURLOPT_LOW_SPEED_TIME =&gt; 10\n    ];\n    \n    \/\/ POST\u30c7\u30fc\u30bf\u304c\u3042\u308b\u5834\u5408\n    if ($data !== null) {\n        $options[CURLOPT_POST] = true;\n        $options[CURLOPT_POSTFIELDS] = $data;\n    }\n    \n    curl_setopt_array($ch, $options);\n    \n    \/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\uff08\u30bf\u30a4\u30df\u30f3\u30b0\u60c5\u5831\u3092\u8a08\u6e2c\uff09\n    $startTime = microtime(true);\n    $response = curl_exec($ch);\n    $endTime = microtime(true);\n    \n    \/\/ \u30bf\u30a4\u30df\u30f3\u30b0\u60c5\u5831\u306e\u53ce\u96c6\n    $info = curl_getinfo($ch);\n    $totalTime = $info['total_time'];\n    $connectTime = $info['connect_time'];\n    $namelookupTime = $info['namelookup_time'];\n    \n    \/\/ \u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30af\n    if ($response === false) {\n        $error = curl_error($ch);\n        $errno = curl_errno($ch);\n        curl_close($ch);\n        \n        \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u30a8\u30e9\u30fc\u306e\u5834\u5408\n        if ($errno == CURLE_OPERATION_TIMEDOUT) {\n            echo \"\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\\n\";\n            echo \"\u30bf\u30a4\u30df\u30f3\u30b0\u60c5\u5831\uff1a\\n\";\n            echo \"- DNS\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u6642\u9593: {$namelookupTime}\u79d2\\n\";\n            echo \"- \u63a5\u7d9a\u6642\u9593: {$connectTime}\u79d2\\n\";\n            echo \"- \u5b9f\u884c\u6642\u9593: \" . ($endTime - $startTime) . \"\u79d2\\n\";\n            \n            \/\/ \u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u306e\u7279\u5b9a\n            if ($namelookupTime &gt; 1) {\n                echo \"DNS\u89e3\u6c7a\u306b\u6642\u9593\u304c\u304b\u304b\u3063\u3066\u3044\u307e\u3059\u3002DNS\u30b5\u30fc\u30d0\u30fc\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\\n\";\n            } elseif ($connectTime &gt; 3) {\n                echo \"\u30b5\u30fc\u30d0\u30fc\u3078\u306e\u63a5\u7d9a\u306b\u6642\u9593\u304c\u304b\u304b\u3063\u3066\u3044\u307e\u3059\u3002\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u72b6\u614b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\\n\";\n            } else {\n                echo \"\u30b5\u30fc\u30d0\u30fc\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u9045\u3044\u304b\u3001\u30c7\u30fc\u30bf\u8ee2\u9001\u306b\u6642\u9593\u304c\u304b\u304b\u3063\u3066\u3044\u307e\u3059\u3002\\n\";\n            }\n            \n            \/\/ \u89e3\u6c7a\u7b56\u306e\u63d0\u6848\n            echo \"\\n\u89e3\u6c7a\u7b56\uff1a\\n\";\n            echo \"1. \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u5024\u306e\u8abf\u6574\uff1a\u51e6\u7406\u306b\u5fc5\u8981\u306a\u6642\u9593\u306b\u5408\u308f\u305b\u3066 CURLOPT_TIMEOUT \u3092\u5897\u3084\u3059\\n\";\n            echo \"2. \u63a5\u7d9a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306e\u8abf\u6574\uff1aCURLOPT_CONNECTTIMEOUT \u3092\u5897\u3084\u3059\\n\";\n            echo \"3. \u30ea\u30af\u30a8\u30b9\u30c8\u3092\u8907\u6570\u306b\u5206\u5272\u3059\u308b\\n\";\n            echo \"4. \u518d\u8a66\u884c\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u5b9f\u88c5\u3059\u308b\\n\";\n        }\n        \n        return [\n            'success' =&gt; false,\n            'error' =&gt; $error,\n            'errno' =&gt; $errno,\n            'timing' =&gt; [\n                'dns' =&gt; $namelookupTime,\n                'connect' =&gt; $connectTime,\n                'total' =&gt; $totalTime\n            ]\n        ];\n    }\n    \n    curl_close($ch);\n    \n    return [\n        'success' =&gt; true,\n        'response' =&gt; $response,\n        'timing' =&gt; [\n            'dns' =&gt; $namelookupTime,\n            'connect' =&gt; $connectTime,\n            'total' =&gt; $totalTime\n        ]\n    ];\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$result = makeRequestWithOptimizedTimeouts('https:\/\/api.example.com\/large-data');\nif ($result['success']) {\n    echo \"\u30ea\u30af\u30a8\u30b9\u30c8\u6210\u529f\u3001\u51e6\u7406\u6642\u9593: \" . $result['timing']['total'] . \"\u79d2\\n\";\n} else {\n    echo \"\u30a8\u30e9\u30fc: \" . $result['error'] . \"\\n\";\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-162\">\u52b9\u679c\u7684\u306a\u518d\u8a66\u884c\u30e1\u30ab\u30cb\u30ba\u30e0<\/h4>\n\n\n\n<p>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306b\u52b9\u679c\u7684\u306b\u5bfe\u51e6\u3059\u308b\u305f\u3081\u306b\u3001\u6307\u6570\u30d0\u30c3\u30af\u30aa\u30d5\u3092\u4f7f\u7528\u3057\u305f\u518d\u8a66\u884c\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction makeRequestWithRetry($url, $maxRetries = 3, $initialTimeout = 30, $options = []) {\n    $attempt = 0;\n    $lastError = null;\n    \n    while ($attempt &lt;= $maxRetries) {\n        \/\/ \u30ea\u30c8\u30e9\u30a4\u3054\u3068\u306b\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3092\u5897\u3084\u3059\n        $timeout = $initialTimeout * pow(1.5, $attempt);\n        \n        \/\/ cURL\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\n        $ch = curl_init($url);\n        $defaultOptions = [\n            CURLOPT_RETURNTRANSFER =&gt; true,\n            CURLOPT_TIMEOUT =&gt; $timeout,\n            CURLOPT_CONNECTTIMEOUT =&gt; min(10, $timeout \/ 3)\n        ];\n        \n        curl_setopt_array($ch, $defaultOptions + $options);\n        \n        \/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\n        $response = curl_exec($ch);\n        $errno = curl_errno($ch);\n        $error = curl_error($ch);\n        $info = curl_getinfo($ch);\n        curl_close($ch);\n        \n        \/\/ \u6210\u529f\u3057\u305f\u5834\u5408\n        if ($response !== false) {\n            return [\n                'success' =&gt; true,\n                'response' =&gt; $response,\n                'info' =&gt; $info,\n                'attempts' =&gt; $attempt + 1\n            ];\n        }\n        \n        \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u30a8\u30e9\u30fc\u306e\u5834\u5408\u306e\u307f\u30ea\u30c8\u30e9\u30a4\n        if ($errno == CURLE_OPERATION_TIMEDOUT) {\n            $attempt++;\n            $lastError = $error;\n            \n            \/\/ \u6b21\u306e\u30ea\u30c8\u30e9\u30a4\u307e\u3067\u306e\u5f85\u6a5f\u6642\u9593\uff08\u6307\u6570\u30d0\u30c3\u30af\u30aa\u30d5\uff09\n            $waitTime = pow(2, $attempt - 1);\n            \n            if ($attempt &lt;= $maxRetries) {\n                echo \"\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u30a8\u30e9\u30fc\u3002{$waitTime}\u79d2\u5f8c\u306b\u30ea\u30c8\u30e9\u30a4\u3057\u307e\u3059\uff08{$attempt}\/{$maxRetries}\uff09...\\n\";\n                sleep($waitTime);\n            }\n        } else {\n            \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u4ee5\u5916\u306e\u30a8\u30e9\u30fc\u306e\u5834\u5408\u306f\u5373\u5ea7\u306b\u5931\u6557\n            return [\n                'success' =&gt; false,\n                'error' =&gt; $error,\n                'errno' =&gt; $errno,\n                'info' =&gt; $info,\n                'attempts' =&gt; $attempt + 1\n            ];\n        }\n    }\n    \n    return [\n        'success' =&gt; false,\n        'error' =&gt; $lastError,\n        'errno' =&gt; CURLE_OPERATION_TIMEDOUT,\n        'attempts' =&gt; $maxRetries + 1,\n        'message' =&gt; \"\u6700\u5927\u30ea\u30c8\u30e9\u30a4\u56de\u6570\uff08{$maxRetries}\uff09\u306b\u9054\u3057\u307e\u3057\u305f\u3002\"\n    ];\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$result = makeRequestWithRetry('https:\/\/api.example.com\/slow-endpoint', 3, 20);\nif ($result['success']) {\n    echo \"\u30ea\u30af\u30a8\u30b9\u30c8\u6210\u529f\uff08{$result['attempts']}\u56de\u76ee\u306e\u8a66\u884c\uff09\\n\";\n} else {\n    echo \"\u3059\u3079\u3066\u306e\u8a66\u884c\u304c\u5931\u6557\u3057\u307e\u3057\u305f: {$result['error']}\\n\";\n}\n?&gt;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-163\">SSL \u95a2\u9023\u306e\u554f\u984c\u306e\u89e3\u6c7a\u65b9\u6cd5<\/h3>\n\n\n\n<p>SSL\/TLS\u95a2\u9023\u306e\u554f\u984c\uff08CURLE_SSL_CONNECT_ERROR\u3001\u30a8\u30e9\u30fc\u30b3\u30fc\u30c935\u306a\u3069\uff09\u306f\u3001\u6697\u53f7\u5316\u901a\u4fe1\u306e\u78ba\u7acb\u6642\u306b\u767a\u751f\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u554f\u984c\u306f\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306b\u95a2\u308f\u308b\u305f\u3081\u3001\u9069\u5207\u306b\u5bfe\u51e6\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-164\">SSL\u63a5\u7d9a\u30a8\u30e9\u30fc\u306e\u4e00\u822c\u7684\u306a\u539f\u56e0<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>SSL\u8a3c\u660e\u66f8\u306e\u691c\u8a3c\u5931\u6557<\/strong>\uff1a\u30b5\u30fc\u30d0\u30fc\u8a3c\u660e\u66f8\u304c\u4fe1\u983c\u3055\u308c\u3066\u3044\u306a\u3044\u3001\u671f\u9650\u5207\u308c\u3001\u307e\u305f\u306f\u7121\u52b9<\/li>\n\n\n\n<li><strong>\u8a3c\u660e\u66f8\u30c1\u30a7\u30fc\u30f3\u306e\u554f\u984c<\/strong>\uff1a\u4e2d\u9593\u8a3c\u660e\u66f8\u306e\u4e0d\u8db3<\/li>\n\n\n\n<li><strong>\u30b5\u30fc\u30d0\u30fc\u540d\u306e\u4e0d\u4e00\u81f4<\/strong>\uff1a\u8a3c\u660e\u66f8\u306eCN\/SAN\u3068\u30db\u30b9\u30c8\u540d\u306e\u4e0d\u4e00\u81f4<\/li>\n\n\n\n<li><strong>\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044SSL\/TLS\u30d0\u30fc\u30b8\u30e7\u30f3<\/strong>\uff1a\u53e4\u3044\u30d7\u30ed\u30c8\u30b3\u30eb\u306e\u307f\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u30b5\u30fc\u30d0\u30fc<\/li>\n\n\n\n<li><strong>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u306e\u554f\u984c<\/strong>\uff1a\u53e4\u3044CA\u8a3c\u660e\u66f8\u30d0\u30f3\u30c9\u30eb\u3001OpenSSL\u306e\u8a2d\u5b9a\u306a\u3069<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-165\">SSL\u554f\u984c\u306e\u30c7\u30d0\u30c3\u30b0\u3068\u89e3\u6c7a\u65b9\u6cd5<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction diagnoseSslIssue($url) {\n    echo \"URL '{$url}'\u306eSSL\u63a5\u7d9a\u554f\u984c\u3092\u8a3a\u65ad\u3057\u3066\u3044\u307e\u3059...\\n\\n\";\n    \n    \/\/ cURL\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u521d\u671f\u5316\n    $ch = curl_init($url);\n    \n    \/\/ \u8a73\u7d30\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a\n    curl_setopt_array($ch, [\n        CURLOPT_RETURNTRANSFER =&gt; true,\n        CURLOPT_NOBODY =&gt; true,\n        CURLOPT_TIMEOUT =&gt; 30,\n        CURLOPT_VERBOSE =&gt; true,\n        \n        \/\/ \u30c7\u30d0\u30c3\u30b0\u306e\u305f\u3081\u306b\u4e00\u6642\u7684\u306b\u8a3c\u660e\u66f8\u691c\u8a3c\u3092\u7121\u52b9\u5316\n        \/\/ \u672c\u756a\u74b0\u5883\u3067\u306f\u6709\u52b9\u306b\u3059\u3079\u304d\u8a2d\u5b9a\n        CURLOPT_SSL_VERIFYPEER =&gt; false,\n        CURLOPT_SSL_VERIFYHOST =&gt; 0\n    ]);\n    \n    \/\/ \u30c7\u30d0\u30c3\u30b0\u51fa\u529b\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\n    $output = fopen('php:\/\/temp', 'w+');\n    curl_setopt($ch, CURLOPT_STDERR, $output);\n    \n    \/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u5b9f\u884c\uff08\u8a3c\u660e\u66f8\u691c\u8a3c\u7121\u52b9\uff09\n    $response = curl_exec($ch);\n    $sslDisabledInfo = curl_getinfo($ch);\n    \n    \/\/ \u30c7\u30d0\u30c3\u30b0\u51fa\u529b\u3092\u53d6\u5f97\n    rewind($output);\n    $verboseLog = stream_get_contents($output);\n    \n    \/\/ \u8a3c\u660e\u66f8\u691c\u8a3c\u6709\u52b9\u3067\u30ea\u30c8\u30e9\u30a4\n    curl_setopt_array($ch, [\n        CURLOPT_SSL_VERIFYPEER =&gt; true,\n        CURLOPT_SSL_VERIFYHOST =&gt; 2\n    ]);\n    \n    $response2 = curl_exec($ch);\n    $error = curl_error($ch);\n    $errno = curl_errno($ch);\n    $sslEnabledInfo = curl_getinfo($ch);\n    \n    curl_close($ch);\n    \n    \/\/ \u8a3a\u65ad\u7d50\u679c\u306e\u8868\u793a\n    echo \"\u8a3a\u65ad\u7d50\u679c:\\n\";\n    echo \"-----------------\\n\";\n    \n    \/\/ 1. \u57fa\u672c\u63a5\u7d9a\u30c1\u30a7\u30c3\u30af\n    echo \"1. SSL\u8a3c\u660e\u66f8\u691c\u8a3c\u306a\u3057\u3067\u306e\u63a5\u7d9a: \";\n    if ($sslDisabledInfo['http_code'] &gt; 0) {\n        echo \"\u2705 \u6210\u529f (HTTP {$sslDisabledInfo['http_code']})\\n\";\n    } else {\n        echo \"\u274c \u5931\u6557\\n\";\n        echo \"  SSL\u4ee5\u5916\u306e\u63a5\u7d9a\u554f\u984c\u304c\u3042\u308a\u307e\u3059\u3002\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u63a5\u7d9a\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\\n\";\n    }\n    \n    \/\/ 2. SSL\u691c\u8a3c\u30c1\u30a7\u30c3\u30af\n    echo \"2. SSL\u8a3c\u660e\u66f8\u691c\u8a3c\u3042\u308a\u3067\u306e\u63a5\u7d9a: \";\n    if ($response2 !== false) {\n        echo \"\u2705 \u6210\u529f (HTTP {$sslEnabledInfo['http_code']})\\n\";\n        echo \"  SSL\u8a2d\u5b9a\u306f\u6b63\u5e38\u3067\u3059\u3002\\n\";\n    } else {\n        echo \"\u274c \u5931\u6557: {$error} ({$errno})\\n\";\n        \n        \/\/ \u30a8\u30e9\u30fc\u306e\u7a2e\u985e\u306b\u5fdc\u3058\u305f\u8a73\u7d30\u60c5\u5831\u3068\u89e3\u6c7a\u7b56\n        if ($errno == CURLE_SSL_CONNECT_ERROR) {\n            echo \"  SSL\u63a5\u7d9a\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\\n\";\n            \n            if (strpos($error, 'certificate') !== false) {\n                echo \"  \u554f\u984c: \u8a3c\u660e\u66f8\u306e\u691c\u8a3c\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\\n\";\n                echo \"  \u89e3\u6c7a\u7b56:\\n\";\n                echo \"  - \u30b7\u30b9\u30c6\u30e0\u306e\u8a3c\u660e\u66f8\u30d0\u30f3\u30c9\u30eb\u3092\u66f4\u65b0\u3057\u3066\u304f\u3060\u3055\u3044\\n\";\n                echo \"  - \u81ea\u5df1\u7f72\u540d\u8a3c\u660e\u66f8\u306e\u5834\u5408\u3001\u4fe1\u983c\u3067\u304d\u308b\u74b0\u5883\u3067\u3042\u308c\u3070 CURLOPT_CAINFO \u3067\u8a3c\u660e\u66f8\u3092\u6307\u5b9a\\n\";\n            } elseif (strpos($error, 'SSL') !== false || strpos($error, 'TLS') !== false) {\n                echo \"  \u554f\u984c: SSL\/TLS\u30d7\u30ed\u30c8\u30b3\u30eb\u306e\u4e0d\u4e00\u81f4\\n\";\n                echo \"  \u89e3\u6c7a\u7b56:\\n\";\n                echo \"  - CURLOPT_SSLVERSION \u3067 TLS 1.2\u4ee5\u4e0a\u3092\u6307\u5b9a\\n\";\n                echo \"  - \u30b5\u30fc\u30d0\u30fc\u306eSSL\/TLS\u8a2d\u5b9a\u3092\u78ba\u8a8d\\n\";\n            }\n        } elseif ($errno == CURLE_SSL_CACERT) {\n            echo \"  \u554f\u984c: \u8a3c\u660e\u66f8\u306e\u767a\u884c\u8005\u3092\u691c\u8a3c\u3067\u304d\u307e\u305b\u3093\u3002\\n\";\n            echo \"  \u89e3\u6c7a\u7b56:\\n\";\n            echo \"  - \u30b7\u30b9\u30c6\u30e0\u306eCA\u8a3c\u660e\u66f8\u30d0\u30f3\u30c9\u30eb\u3092\u66f4\u65b0\\n\";\n            echo \"  - CURLOPT_CAINFO \u3067\u6700\u65b0\u306eCA\u8a3c\u660e\u66f8\u30d0\u30f3\u30c9\u30eb\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\\n\";\n        } elseif ($errno == CURLE_SSL_PEER_CERTIFICATE) {\n            echo \"  \u554f\u984c: \u30d4\u30a2\u8a3c\u660e\u66f8\u304c\u7121\u52b9\u3067\u3059\u3002\\n\";\n            echo \"  \u89e3\u6c7a\u7b56:\\n\";\n            echo \"  - \u30b5\u30fc\u30d0\u30fc\u306e\u8a3c\u660e\u66f8\u304c\u6709\u52b9\u304b\u78ba\u8a8d\uff08\u671f\u9650\u5207\u308c\u3067\u306a\u3044\u304b\uff09\\n\";\n            echo \"  - \u8a3c\u660e\u66f8\u306eCN\/SAN\u30d5\u30a3\u30fc\u30eb\u30c9\u3068\u30a2\u30af\u30bb\u30b9URL\u306e\u30db\u30b9\u30c8\u540d\u304c\u4e00\u81f4\u3059\u308b\u304b\u78ba\u8a8d\\n\";\n        }\n    }\n    \n    \/\/ 3. SSL\u60c5\u5831\u306e\u8a73\u7d30\n    echo \"\\n3. SSL\u63a5\u7d9a\u306e\u8a73\u7d30\u60c5\u5831:\\n\";\n    \n    \/\/ OpenSSL\u3067\u306e\u8a3c\u660e\u66f8\u60c5\u5831\u53d6\u5f97\n    $parsedUrl = parse_url($url);\n    $host = $parsedUrl['host'] ?? '';\n    $port = $parsedUrl['port'] ?? 443;\n    \n    echo \"  \u8a3c\u660e\u66f8\u60c5\u5831\u306e\u53d6\u5f97\u3092\u8a66\u307f\u3066\u3044\u307e\u3059...\\n\";\n    $context = stream_context_create([\n        'ssl' =&gt; [\n            'verify_peer' =&gt; false,\n            'verify_peer_name' =&gt; false,\n            'capture_peer_cert' =&gt; true\n        ]\n    ]);\n    \n    $socket = @stream_socket_client(\n        \"ssl:\/\/{$host}:{$port}\",\n        $errno,\n        $errstr,\n        30,\n        STREAM_CLIENT_CONNECT,\n        $context\n    );\n    \n    if ($socket) {\n        $params = stream_context_get_params($socket);\n        if (isset($params['options']['ssl']['peer_certificate'])) {\n            $cert = openssl_x509_parse($params['options']['ssl']['peer_certificate']);\n            \n            echo \"  \u767a\u884c\u8005: \" . ($cert['issuer']['CN'] ?? 'Unknown') . \"\\n\";\n            echo \"  \u5bfe\u8c61: \" . ($cert['subject']['CN'] ?? 'Unknown') . \"\\n\";\n            echo \"  \u6709\u52b9\u671f\u9650: \" . date('Y-m-d H:i:s', $cert['validFrom_time_t']) . \" \u304b\u3089 \" . \n                date('Y-m-d H:i:s', $cert['validTo_time_t']) . \" \u307e\u3067\\n\";\n            \n            \/\/ \u8a3c\u660e\u66f8\u306e\u6709\u52b9\u671f\u9650\u30c1\u30a7\u30c3\u30af\n            $now = time();\n            if ($now &lt; $cert['validFrom_time_t']) {\n                echo \"  \u26a0\ufe0f \u8a3c\u660e\u66f8\u306f\u307e\u3060\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u3002\\n\";\n            } elseif ($now &gt; $cert['validTo_time_t']) {\n                echo \"  \u26a0\ufe0f \u8a3c\u660e\u66f8\u306e\u6709\u52b9\u671f\u9650\u304c\u5207\u308c\u3066\u3044\u307e\u3059\u3002\\n\";\n            } else {\n                echo \"  \u2705 \u8a3c\u660e\u66f8\u306f\u73fe\u5728\u6709\u52b9\u3067\u3059\u3002\\n\";\n            }\n            \n            \/\/ \u30db\u30b9\u30c8\u540d\u30c1\u30a7\u30c3\u30af\n            if (isset($cert['extensions']['subjectAltName'])) {\n                $altNames = explode(', ', $cert['extensions']['subjectAltName']);\n                $dnsNames = array_filter($altNames, function($name) {\n                    return strpos($name, 'DNS:') === 0;\n                });\n                \n                $dnsNames = array_map(function($name) {\n                    return substr($name, 4); \/\/ 'DNS:' \u3092\u9664\u53bb\n                }, $dnsNames);\n                \n                echo \"  \u30b5\u30d6\u30b8\u30a7\u30af\u30c8\u4ee3\u66ff\u540d (SAN): \" . implode(', ', $dnsNames) . \"\\n\";\n                \n                \/\/ \u30db\u30b9\u30c8\u540d\u304cSAN\u306b\u542b\u307e\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\n                $hostMatch = false;\n                foreach ($dnsNames as $dnsName) {\n                    if ($dnsName === $host || ($dnsName[0] === '*' &amp;&amp; substr($host, strpos($host, '.')) === substr($dnsName, 1))) {\n                        $hostMatch = true;\n                        break;\n                    }\n                }\n                \n                if ($hostMatch) {\n                    echo \"  \u2705 \u30db\u30b9\u30c8\u540d\u306fSAN\u3068\u4e00\u81f4\u3057\u3066\u3044\u307e\u3059\u3002\\n\";\n                } else {\n                    echo \"  \u26a0\ufe0f \u30db\u30b9\u30c8\u540d '{$host}' \u306fSAN\u306e\u3069\u306e\u30a8\u30f3\u30c8\u30ea\u3068\u3082\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\\n\";\n                }\n            } else {\n                \/\/ \u53e4\u3044\u65b9\u5f0f\uff08CN\u3067\u306e\u691c\u8a3c\uff09\n                $cn = $cert['subject']['CN'] ?? '';\n                if ($cn === $host || ($cn[0] === '*' &amp;&amp; substr($host, strpos($host, '.')) === substr($cn, 1))) {\n                    echo \"  \u2705 \u30db\u30b9\u30c8\u540d\u306fCN\u3068\u4e00\u81f4\u3057\u3066\u3044\u307e\u3059\u3002\\n\";\n                } else {\n                    echo \"  \u26a0\ufe0f \u30db\u30b9\u30c8\u540d '{$host}' \u306fCN '{$cn}' \u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\\n\";\n                }\n            }\n        }\n        fclose($socket);\n    } else {\n        echo \"  \u274c SSL\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {$errstr} ({$errno})\\n\";\n    }\n    \n    \/\/ 4. \u8a73\u7d30\u306a\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\n    echo \"\\n4. cURL\u8a73\u7d30\u30c7\u30d0\u30c3\u30b0\u60c5\u5831:\\n\";\n    echo \"-----------------\\n\";\n    echo $verboseLog;\n    echo \"-----------------\\n\";\n    \n    \/\/ 5. \u63a8\u5968\u8a2d\u5b9a\n    echo \"\\n5. \u63a8\u5968\u8a2d\u5b9a:\\n\";\n    echo \"```php\\n\";\n    echo '$ch = curl_init(\"' . $url . '\");' . \"\\n\";\n    echo 'curl_setopt_array($ch, [' . \"\\n\";\n    echo '    CURLOPT_RETURNTRANSFER =&gt; true,' . \"\\n\";\n    echo '    CURLOPT_SSL_VERIFYPEER =&gt; true,' . \"\\n\";\n    echo '    CURLOPT_SSL_VERIFYHOST =&gt; 2,' . \"\\n\";\n    echo '    CURLOPT_SSLVERSION =&gt; CURL_SSLVERSION_TLSv1_2,' . \"\\n\";\n    \n    \/\/ \u7279\u5b9a\u306e\u554f\u984c\u306b\u5fdc\u3058\u305f\u63a8\u5968\u8a2d\u5b9a\n    if ($errno == CURLE_SSL_CACERT) {\n        echo '    \/\/ \u30b7\u30b9\u30c6\u30e0\u306eCA\u8a3c\u660e\u66f8\u30d0\u30f3\u30c9\u30eb\u3092\u66f4\u65b0\u3067\u304d\u306a\u3044\u5834\u5408' . \"\\n\";\n        echo '    CURLOPT_CAINFO =&gt; \"\/path\/to\/cacert.pem\",' . \"\\n\";\n    }\n    \n    echo ']);' . \"\\n\";\n    echo \"```\\n\";\n}\n\n\/\/ \u4f7f\u7528\u4f8b\ndiagnoseSslIssue('https:\/\/example.com');\n?&gt;\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-166\">\u307e\u3068\u3081\uff1a\u52b9\u679c\u7684\u306aPHP cURL\u306e\u6d3b\u7528\u6cd5<\/h2>\n\n\n\n<p>\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001PHP\u306ecURL\u3092\u4f7f\u7528\u3057\u3066\u5916\u90e8API\u3084Web\u30b5\u30fc\u30d3\u30b9\u3068\u9023\u643a\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u3001\u57fa\u672c\u304b\u3089\u5fdc\u7528\u307e\u30679\u3064\u306e\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af\u3092\u8a73\u3057\u304f\u89e3\u8aac\u3057\u3066\u304d\u307e\u3057\u305f\u3002\u3053\u3053\u3067\u306f\u3001\u5b66\u3093\u3060\u5185\u5bb9\u3092\u632f\u308a\u8fd4\u308a\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u5fdc\u7528\u30dd\u30a4\u30f3\u30c8\u3068\u4eca\u5f8c\u306e\u5b66\u7fd2\u306e\u305f\u3081\u306e\u30ea\u30bd\u30fc\u30b9\u306b\u3064\u3044\u3066\u307e\u3068\u3081\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-167\">\u3053\u306e\u8a18\u4e8b\u3067\u5b66\u3093\u30609\u3064\u306e\u30c6\u30af\u30cb\u30c3\u30af\u306e\u7dcf\u62ec<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-168\">1. cURL\u306e\u57fa\u672c<\/h4>\n\n\n\n<p>PHP\u3067cURL\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u74b0\u5883\u8a2d\u5b9a\u3001\u57fa\u672c\u7684\u306a\u95a2\u6570\uff08<code>curl_init()<\/code>\u3001<code>curl_setopt()<\/code>\u3001<code>curl_exec()<\/code>\u3001<code>curl_close()<\/code>\uff09\u306e\u4f7f\u3044\u65b9\u3092\u5b66\u3073\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u57fa\u672c\u7684\u306a\u95a2\u6570\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u3001HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u9001\u4fe1\u3068\u5fdc\u7b54\u306e\u51e6\u7406\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-169\">2. cURL\u95a2\u6570\u306e\u7406\u89e3<\/h4>\n\n\n\n<p>\u4e3b\u8981\u306acURLOPT\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u4f7f\u3044\u65b9\u3068\u3001\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406\u306e\u91cd\u8981\u6027\u306b\u3064\u3044\u3066\u5b66\u3073\u307e\u3057\u305f\u3002\u9069\u5207\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a\u3068\u78ba\u5b9f\u306a\u30ea\u30bd\u30fc\u30b9\u89e3\u653e\u306f\u3001\u5b89\u5b9a\u3057\u305f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306e\u57fa\u790e\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-170\">3. POST\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u9001\u4fe1<\/h4>\n\n\n\n<p>\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u3001JSON\u30c7\u30fc\u30bf\u3001\u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\uff08\u30d5\u30a1\u30a4\u30eb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\uff09\u306e\u9001\u4fe1\u65b9\u6cd5\u3092\u7406\u89e3\u3057\u307e\u3057\u305f\u3002\u30c7\u30fc\u30bf\u5f62\u5f0f\u306b\u5fdc\u3058\u305f\u9069\u5207\u306a\u9001\u4fe1\u65b9\u6cd5\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u3067\u3001\u3055\u307e\u3056\u307e\u306aAPI\u3068\u52b9\u7387\u7684\u306b\u9023\u643a\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-171\">4. \u30d8\u30c3\u30c0\u30fc\u3068\u30af\u30c3\u30ad\u30fc\u306e\u64cd\u4f5c<\/h4>\n\n\n\n<p>\u30ab\u30b9\u30bf\u30e0\u30d8\u30c3\u30c0\u30fc\u306e\u8a2d\u5b9a\u3001\u30af\u30c3\u30ad\u30fc\u306e\u9001\u53d7\u4fe1\u3001\u304a\u3088\u3073\u9069\u5207\u306aContent-Type\u30d8\u30c3\u30c0\u30fc\u306e\u8a2d\u5b9a\u65b9\u6cd5\u3092\u5b66\u3073\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3088\u308a\u3001\u8a8d\u8a3c\u304c\u5fc5\u8981\u306aAPI\u3084\u30bb\u30c3\u30b7\u30e7\u30f3\u72b6\u614b\u3092\u7dad\u6301\u3059\u308b\u5fc5\u8981\u304c\u3042\u308bWeb\u30b5\u30fc\u30d3\u30b9\u3068\u306e\u9023\u643a\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-172\">5. \u5fdc\u7b54\u51e6\u7406\u306e\u9ad8\u5ea6\u306a\u65b9\u6cd5<\/h4>\n\n\n\n<p>HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u306e\u53d6\u5f97\u3068\u5224\u65ad\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc\u306e\u89e3\u6790\u3001\u304a\u3088\u3073\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0\u6280\u8853\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u30b9\u30ad\u30eb\u306f\u3001\u5805\u7262\u306aAPI\u9023\u643a\u6a5f\u80fd\u306e\u5b9f\u88c5\u306b\u4e0d\u53ef\u6b20\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-173\">6. \u8a8d\u8a3c\u51e6\u7406<\/h4>\n\n\n\n<p>\u57fa\u672c\u8a8d\u8a3c\u3001OAuth\u8a8d\u8a3c\u3001API\u30ad\u30fc\u3092\u4f7f\u7528\u3057\u305f\u8a8d\u8a3c\u306e\u5b9f\u88c5\u65b9\u6cd5\u306b\u3064\u3044\u3066\u5b66\u3073\u307e\u3057\u305f\u3002\u3055\u307e\u3056\u307e\u306a\u8a8d\u8a3c\u65b9\u5f0f\u306b\u5bfe\u5fdc\u3059\u308b\u3053\u3068\u3067\u3001\u30bb\u30ad\u30e5\u30a2\u306aAPI\u30a2\u30af\u30bb\u30b9\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-174\">7. \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316<\/h4>\n\n\n\n<p>\u63a5\u7d9a\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a\u3001\u30ad\u30fc\u30d7\u30a2\u30e9\u30a4\u30d6\u306e\u6d3b\u7528\u3001\u5727\u7e2e\u8ee2\u9001\uff08gzip\uff09\u306e\u5229\u7528\u306a\u3069\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7406\u89e3\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u6700\u9069\u5316\u306b\u3088\u308a\u3001API\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u901f\u5ea6\u3068\u52b9\u7387\u304c\u5927\u5e45\u306b\u5411\u4e0a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-175\">8. \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56<\/h4>\n\n\n\n<p>SSL\u8a3c\u660e\u66f8\u306e\u691c\u8a3c\u3001\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u30c7\u30fc\u30bf\u306e\u30b5\u30cb\u30bf\u30a4\u30ba\u3001\u6a5f\u5bc6\u60c5\u5831\u306e\u5b89\u5168\u306a\u53d6\u308a\u6271\u3044\u306a\u3069\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u5b66\u3073\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u5bfe\u7b56\u306f\u3001\u5b89\u5168\u306aAPI\u9023\u643a\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306b\u4e0d\u53ef\u6b20\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-176\">9. \u30de\u30eb\u30c1\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u4e26\u5217\u51e6\u7406<\/h4>\n\n\n\n<p><code>curl_multi_init()<\/code>\u3092\u4f7f\u3063\u305f\u4e26\u5217\u30ea\u30af\u30a8\u30b9\u30c8\u3001\u975e\u540c\u671f\u51e6\u7406\u306e\u5b9f\u88c5\u3001\u30ea\u30bd\u30fc\u30b9\u6d88\u8cbb\u3092\u6291\u3048\u305f\u5927\u91cf\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u51e6\u7406\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3088\u308a\u3001\u8907\u6570\u306eAPI\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u52b9\u7387\u7684\u306b\u51e6\u7406\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-177\">\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u5fdc\u7528\u30dd\u30a4\u30f3\u30c8<\/h3>\n\n\n\n<p>\u5b66\u3093\u3060\u30c6\u30af\u30cb\u30c3\u30af\u3092\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u6d3b\u7528\u3059\u308b\u305f\u3081\u306e\u30dd\u30a4\u30f3\u30c8\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-178\">1. \u518d\u5229\u7528\u53ef\u80fd\u306aAPI\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u4f5c\u6210<\/h4>\n\n\n\n<p>cURL\u306e\u57fa\u672c\u6a5f\u80fd\u3092\u62bd\u8c61\u5316\u3057\u305f\u518d\u5229\u7528\u53ef\u80fd\u306a\u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3067\u3001\u30b3\u30fc\u30c9\u306e\u91cd\u8907\u3092\u907f\u3051\u3001\u4e00\u8cab\u3057\u305f\u65b9\u6cd5\u3067API\u3068\u9023\u643a\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nclass ApiClient {\n    private $baseUrl;\n    private $headers;\n    private $timeout;\n    \n    public function __construct($baseUrl, $headers = [], $timeout = 30) {\n        $this-&gt;baseUrl = rtrim($baseUrl, '\/');\n        $this-&gt;headers = $headers;\n        $this-&gt;timeout = $timeout;\n    }\n    \n    public function get($endpoint, $params = [], $options = []) {\n        $url = $this-&gt;buildUrl($endpoint, $params);\n        return $this-&gt;request('GET', $url, null, $options);\n    }\n    \n    public function post($endpoint, $data, $params = [], $options = []) {\n        $url = $this-&gt;buildUrl($endpoint, $params);\n        return $this-&gt;request('POST', $url, $data, $options);\n    }\n    \n    \/\/ PUT\u3001DELETE\u3001PATCH\u306a\u3069\u306e\u4ed6\u306e\u30e1\u30bd\u30c3\u30c9...\n    \n    private function request($method, $url, $data = null, $additionalOptions = []) {\n        $ch = curl_init();\n        \n        $options = [\n            CURLOPT_URL =&gt; $url,\n            CURLOPT_RETURNTRANSFER =&gt; true,\n            CURLOPT_CONNECTTIMEOUT =&gt; 10,\n            CURLOPT_TIMEOUT =&gt; $this-&gt;timeout,\n            CURLOPT_SSL_VERIFYPEER =&gt; true,\n            CURLOPT_SSL_VERIFYHOST =&gt; 2,\n            CURLOPT_CUSTOMREQUEST =&gt; $method\n        ];\n        \n        \/\/ \u30d8\u30c3\u30c0\u30fc\u306e\u8a2d\u5b9a\n        if (!empty($this-&gt;headers)) {\n            $headers = [];\n            foreach ($this-&gt;headers as $key =&gt; $value) {\n                $headers[] = \"$key: $value\";\n            }\n            $options[CURLOPT_HTTPHEADER] = $headers;\n        }\n        \n        \/\/ \u30c7\u30fc\u30bf\u306e\u8a2d\u5b9a\uff08POST\u306a\u3069\uff09\n        if ($data !== null) {\n            if (is_array($data)) {\n                if (isset($this-&gt;headers['Content-Type']) &amp;&amp; $this-&gt;headers['Content-Type'] === 'application\/json') {\n                    $options[CURLOPT_POSTFIELDS] = json_encode($data);\n                } else {\n                    $options[CURLOPT_POSTFIELDS] = http_build_query($data);\n                }\n            } else {\n                $options[CURLOPT_POSTFIELDS] = $data;\n            }\n        }\n        \n        \/\/ \u8ffd\u52a0\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u30de\u30fc\u30b8\n        if (!empty($additionalOptions)) {\n            $options = $additionalOptions + $options;\n        }\n        \n        curl_setopt_array($ch, $options);\n        \n        \/\/ \u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u7528\u306e\u5909\u6570\n        $response = curl_exec($ch);\n        $error = curl_error($ch);\n        $errno = curl_errno($ch);\n        $info = curl_getinfo($ch);\n        \n        curl_close($ch);\n        \n        \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406\n        if ($response === false) {\n            throw new Exception(\"API Request Error: $error ($errno)\", $errno);\n        }\n        \n        \/\/ JSON\u5fdc\u7b54\u3092\u81ea\u52d5\u7684\u306b\u30c7\u30b3\u30fc\u30c9\n        if (isset($info['content_type']) &amp;&amp; strpos($info['content_type'], 'application\/json') !== false) {\n            $decodedResponse = json_decode($response, true);\n            if (json_last_error() === JSON_ERROR_NONE) {\n                return $decodedResponse;\n            }\n        }\n        \n        return $response;\n    }\n    \n    private function buildUrl($endpoint, $params = []) {\n        $url = $this-&gt;baseUrl . '\/' . ltrim($endpoint, '\/');\n        \n        if (!empty($params)) {\n            $url .= (strpos($url, '?') === false ? '?' : '&amp;') . http_build_query($params);\n        }\n        \n        return $url;\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\ntry {\n    $apiClient = new ApiClient(\n        'https:\/\/api.example.com',\n        ['Content-Type' =&gt; 'application\/json', 'Authorization' =&gt; 'Bearer ' . $token]\n    );\n    \n    \/\/ GET\u30ea\u30af\u30a8\u30b9\u30c8\n    $users = $apiClient-&gt;get('users', ['page' =&gt; 1, 'per_page' =&gt; 10]);\n    \n    \/\/ POST\u30ea\u30af\u30a8\u30b9\u30c8\n    $newUser = $apiClient-&gt;post('users', [\n        'name' =&gt; '\u5c71\u7530\u592a\u90ce',\n        'email' =&gt; 'yamada@example.com'\n    ]);\n    \n    \/\/ \u7d50\u679c\u306e\u51e6\u7406\n    print_r($users);\n    print_r($newUser);\n    \n} catch (Exception $e) {\n    echo \"\u30a8\u30e9\u30fc: \" . $e-&gt;getMessage() . \"\\n\";\n}\n?&gt;\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30af\u30e9\u30b9\u3092\u57fa\u306b\u3057\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8981\u4ef6\u306b\u5408\u308f\u305b\u3066\u62e1\u5f35\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001OAuth\u8a8d\u8a3c\u306e\u81ea\u52d5\u66f4\u65b0\u3084\u3001\u30ec\u30fc\u30c8\u5236\u9650\u306e\u51e6\u7406\u306a\u3069\u3092\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-179\">2. \u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3067\u306e\u6d3b\u7528<\/h4>\n\n\n\n<p>\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3067\u306f\u3001\u7570\u306a\u308b\u30b5\u30fc\u30d3\u30b9\u9593\u306e\u901a\u4fe1\u304c\u91cd\u8981\u3067\u3059\u3002\u5b66\u3093\u3060cURL\u30c6\u30af\u30cb\u30c3\u30af\u3092\u4f7f\u7528\u3057\u3066\u3001\u52b9\u7387\u7684\u306a\u30b5\u30fc\u30d3\u30b9\u9593\u901a\u4fe1\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u975e\u540c\u671f\u30ea\u30af\u30a8\u30b9\u30c8<\/strong>\uff1a\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30bf\u30b9\u30af\u3084\u975e\u540c\u671f\u51e6\u7406\u306b<code>curl_multi_*<\/code>\u95a2\u6570\u3092\u4f7f\u7528<\/li>\n\n\n\n<li><strong>\u518d\u8a66\u884c\u30e1\u30ab\u30cb\u30ba\u30e0<\/strong>\uff1a\u4e00\u6642\u7684\u306a\u30b5\u30fc\u30d3\u30b9\u969c\u5bb3\u306b\u5bfe\u3059\u308b\u8010\u6027\u3092\u9ad8\u3081\u308b\u305f\u3081\u306e\u518d\u8a66\u884c\u30ed\u30b8\u30c3\u30af\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li><strong>\u30b5\u30fc\u30ad\u30c3\u30c8\u30d6\u30ec\u30fc\u30ab\u30fc<\/strong>\uff1a\u969c\u5bb3\u306e\u3042\u308b\u30b5\u30fc\u30d3\u30b9\u3078\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4e00\u6642\u7684\u306b\u4e2d\u65ad\u3059\u308b\u4ed5\u7d44\u307f\u306e\u5b9f\u88c5<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-180\">3. \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u6d3b\u7528<\/h4>\n\n\n\n<p>API\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u3059\u308b\u3053\u3068\u3067\u3001\u5916\u90e8\u30b5\u30fc\u30d3\u30b9\u3078\u306e\u4f9d\u5b58\u3092\u6e1b\u3089\u3057\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction cachedApiRequest($url, $cacheExpiry = 300) {\n    $cacheKey = 'api_' . md5($url);\n    $cachePath = sys_get_temp_dir() . '\/' . $cacheKey;\n    \n    \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u30c1\u30a7\u30c3\u30af\n    if (file_exists($cachePath) &amp;&amp; (time() - filemtime($cachePath) &lt; $cacheExpiry)) {\n        return json_decode(file_get_contents($cachePath), true);\n    }\n    \n    \/\/ API\u30ea\u30af\u30a8\u30b9\u30c8\n    $ch = curl_init($url);\n    curl_setopt_array($ch, [\n        CURLOPT_RETURNTRANSFER =&gt; true,\n        CURLOPT_TIMEOUT =&gt; 10,\n        CURLOPT_SSL_VERIFYPEER =&gt; true,\n        CURLOPT_SSL_VERIFYHOST =&gt; 2\n    ]);\n    \n    $response = curl_exec($ch);\n    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n    curl_close($ch);\n    \n    \/\/ \u6210\u529f\u3057\u305f\u5834\u5408\u306e\u307f\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u66f4\u65b0\n    if ($response !== false &amp;&amp; $httpCode &gt;= 200 &amp;&amp; $httpCode &lt; 300) {\n        file_put_contents($cachePath, $response);\n        return json_decode($response, true);\n    }\n    \n    \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u3042\u308c\u3070\u671f\u9650\u5207\u308c\u3067\u3082\u4f7f\u7528\uff08\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\uff09\n    if (file_exists($cachePath)) {\n        return json_decode(file_get_contents($cachePath), true);\n    }\n    \n    return null; \/\/ \u30a8\u30e9\u30fc\u307e\u305f\u306f\u30c7\u30fc\u30bf\u306a\u3057\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$userData = cachedApiRequest('https:\/\/api.example.com\/users\/123', 600);\nif ($userData) {\n    echo \"\u30e6\u30fc\u30b6\u30fc\u540d: \" . $userData['name'] . \"\\n\";\n} else {\n    echo \"\u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\\n\";\n}\n?&gt;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-181\">4. \u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u3068\u5206\u6790<\/h4>\n\n\n\n<p>\u672c\u756a\u74b0\u5883\u3067\u306eAPI\u9023\u643a\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u4fe1\u983c\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u3001\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3082\u91cd\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\nfunction monitoredApiRequest($url, $method = 'GET', $data = null) {\n    $startTime = microtime(true);\n    $success = false;\n    $responseCode = 0;\n    $errorMessage = '';\n    \n    try {\n        $ch = curl_init();\n        curl_setopt_array($ch, [\n            CURLOPT_URL =&gt; $url,\n            CURLOPT_RETURNTRANSFER =&gt; true,\n            CURLOPT_CUSTOMREQUEST =&gt; $method,\n            CURLOPT_TIMEOUT =&gt; 30\n        ]);\n        \n        if ($data &amp;&amp; $method !== 'GET') {\n            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);\n        }\n        \n        $response = curl_exec($ch);\n        $responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n        \n        if ($response === false) {\n            $errorMessage = curl_error($ch);\n        } else {\n            $success = ($responseCode &gt;= 200 &amp;&amp; $responseCode &lt; 300);\n        }\n        \n        curl_close($ch);\n        \n    } catch (Exception $e) {\n        $errorMessage = $e-&gt;getMessage();\n    }\n    \n    $endTime = microtime(true);\n    $executionTime = $endTime - $startTime;\n    \n    \/\/ \u30e1\u30c8\u30ea\u30af\u30b9\u306e\u8a18\u9332\n    logApiMetrics([\n        'url' =&gt; $url,\n        'method' =&gt; $method,\n        'response_code' =&gt; $responseCode,\n        'execution_time' =&gt; $executionTime,\n        'success' =&gt; $success,\n        'error' =&gt; $errorMessage,\n        'timestamp' =&gt; date('Y-m-d H:i:s')\n    ]);\n    \n    return [\n        'success' =&gt; $success,\n        'response_code' =&gt; $responseCode,\n        'execution_time' =&gt; $executionTime,\n        'error' =&gt; $errorMessage\n    ];\n}\n\nfunction logApiMetrics($metrics) {\n    \/\/ \u30e1\u30c8\u30ea\u30af\u30b9\u3092\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\n    $logLine = json_encode($metrics) . \"\\n\";\n    file_put_contents('api_metrics.log', $logLine, FILE_APPEND);\n    \n    \/\/ \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u4fdd\u5b58\u5148\u3092\u691c\u8a0e\uff1a\n    \/\/ - Elasticsearch\u306a\u3069\u306e\u5206\u6790\u30b7\u30b9\u30c6\u30e0\n    \/\/ - Prometheus\u306a\u3069\u306e\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u30c4\u30fc\u30eb\n    \/\/ - \u30ed\u30fc\u30ab\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$result = monitoredApiRequest('https:\/\/api.example.com\/data', 'POST', json_encode(['key' =&gt; 'value']));\nif ($result['success']) {\n    echo \"API\u547c\u3073\u51fa\u3057\u6210\u529f\uff08{$result['execution_time']}\u79d2\uff09\\n\";\n} else {\n    echo \"API\u547c\u3073\u51fa\u3057\u5931\u6557: {$result['error']} (\u30b3\u30fc\u30c9: {$result['response_code']})\\n\";\n}\n?&gt;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-182\">\u4eca\u5f8c\u306e\u5b66\u7fd2\u306e\u305f\u3081\u306e\u30ea\u30bd\u30fc\u30b9\u7d39\u4ecb<\/h3>\n\n\n\n<p>PHP\u3068cURL\u306b\u3064\u3044\u3066\u3055\u3089\u306b\u5b66\u3076\u305f\u3081\u306e\u512a\u308c\u305f\u30ea\u30bd\u30fc\u30b9\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-183\">\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/www.php.net\/manual\/ja\/book.curl.php\">PHP\u516c\u5f0f\u30de\u30cb\u30e5\u30a2\u30eb \u2013 cURL\u95a2\u6570<\/a><\/strong><br>PHP\u306ecURL\u95a2\u6570\u306b\u95a2\u3059\u308b\u6700\u3082\u4fe1\u983c\u6027\u306e\u9ad8\u3044\u60c5\u5831\u6e90\u3067\u3059\u3002\u3059\u3079\u3066\u306e\u95a2\u6570\u3068\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a73\u7d30\u306a\u8aac\u660e\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/curl.se\/docs\/\">cURL\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/a><\/strong><br>cURL\u30e9\u30a4\u30d6\u30e9\u30ea\u81ea\u4f53\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u3059\u3002\u4f4e\u30ec\u30d9\u30eb\u306e\u52d5\u4f5c\u306b\u3064\u3044\u3066\u7406\u89e3\u3057\u305f\u3044\u5834\u5408\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-184\">\u66f8\u7c4d\u3068\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb<\/h4>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u300cRESTful Web API\u306e\u8a2d\u8a08\u300d<\/strong> \u2013 Leonard Richardson, Mike Amundsen, Sam Ruby\u8457<br>API\u306e\u8a2d\u8a08\u3068\u4f7f\u7528\u306b\u95a2\u3059\u308b\u5305\u62ec\u7684\u306a\u30ac\u30a4\u30c9\u3067\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u306e\u5b9f\u88c5\u306b\u3064\u3044\u3066\u3082\u6271\u3063\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u300cPHP: The Right Way\u300d<\/strong><br>PHP\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u307e\u3068\u3081\u305f\u30aa\u30f3\u30e9\u30a4\u30f3\u30d6\u30c3\u30af\u3067\u3001HTTP\u901a\u4fe1\u3084API\u306e\u4f7f\u7528\u306b\u3064\u3044\u3066\u3082\u89e6\u308c\u3066\u3044\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-185\">\u30aa\u30f3\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3068\u30e9\u30a4\u30d6\u30e9\u30ea<\/h4>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/www.postman.com\/\">Postman<\/a><\/strong><br>API\u30c6\u30b9\u30c8\u30c4\u30fc\u30eb\u3067\u3001PHP\u3067cURL\u3092\u5b9f\u88c5\u3059\u308b\u524d\u306bAPI\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u8996\u899a\u7684\u306b\u30c6\u30b9\u30c8\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/docs.guzzlephp.org\/\">Guzzle<\/a><\/strong><br>\u3088\u308a\u9ad8\u5ea6\u306aHTTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u5fc5\u8981\u306a\u5834\u5408\u3001Guzzle\u306e\u5b66\u7fd2\u304c\u5f79\u7acb\u3061\u307e\u3059\u3002cURL\u306e\u4e0a\u306b\u69cb\u7bc9\u3055\u308c\u305f\u62bd\u8c61\u5316\u30ec\u30a4\u30e4\u30fc\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-186\">\u5b9f\u8df5\u3068\u5fdc\u7528<\/h4>\n\n\n\n<ol start=\"7\" class=\"wp-block-list\">\n<li><strong>\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u8ca2\u732e<\/strong><br>GitHub\u306a\u3069\u3067cURL\u3092\u4f7f\u7528\u3057\u305fPHP\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u63a2\u3057\u3001\u30b3\u30fc\u30c9\u3092\u8aad\u3093\u3060\u308a\u8ca2\u732e\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u3067\u5b9f\u8df5\u7684\u306a\u30b9\u30ad\u30eb\u304c\u8eab\u306b\u3064\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>API\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u4f5c\u6210\u3068\u516c\u958b<\/strong><br>\u81ea\u5206\u306eAPI\u3092\u4f5c\u6210\u3057\u3001\u305d\u308c\u3092cURL\u3067\u547c\u3073\u51fa\u3059\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u4e21\u9762\u304b\u3089\u306e\u7406\u89e3\u304c\u6df1\u307e\u308a\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-187\">\u7d50\u8ad6<\/h3>\n\n\n\n<p>PHP\u3067cURL\u3092\u52b9\u679c\u7684\u306b\u4f7f\u3044\u3053\u306a\u3059\u3053\u3068\u3067\u3001\u5916\u90e8API\u3084Web\u30b5\u30fc\u30d3\u30b9\u3068\u306e\u9023\u643a\u304c\u5bb9\u6613\u306b\u306a\u308a\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6a5f\u80fd\u3092\u5927\u5e45\u306b\u62e1\u5f35\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u8a18\u4e8b\u3067\u5b66\u3093\u30609\u3064\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u5b9f\u8df5\u3057\u3001\u7d99\u7d9a\u7684\u306b\u5b66\u7fd2\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u5805\u7262\u3067\u52b9\u7387\u7684\u306aAPI\u9023\u643a\u3092\u5b9f\u73fe\u3067\u304d\u308b\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p>\u6700\u65b0\u306eWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u3067\u306f\u3001\u8907\u6570\u306e\u30b5\u30fc\u30d3\u30b9\u3084API\u3092\u9023\u643a\u3055\u305b\u308b\u3053\u3068\u304c\u5f53\u305f\u308a\u524d\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002PHP\u306ecURL\u306f\u3001\u305d\u306e\u3088\u3046\u306a\u9023\u643a\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306e\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3067\u3042\u308a\u3001\u9069\u5207\u306b\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u4fa1\u5024\u306e\u9ad8\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u306e\u8a18\u4e8b\u304c\u3001\u7686\u3055\u3093\u306ePHP\u958b\u767a\u30b9\u30ad\u30eb\u306e\u5411\u4e0a\u306b\u5f79\u7acb\u3064\u3053\u3068\u3092\u9858\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u304a\u3044\u3066\u3001\u5916\u90e8\u30b5\u30fc\u30d3\u30b9\u3084API\u3068\u306e\u901a\u4fe1\u306f\u6b20\u304b\u305b\u306a\u3044\u8981\u7d20\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002PHP\u3067\u5916\u90e8\u30b5\u30fc\u30d3\u30b9\u3068\u9023\u643a\u3059\u308b\u969b\u306b\u6700\u3082\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3068\u306a\u308b\u306e\u304c\u300ccURL\u300d\u3067\u3059\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001PHP\u958b\u767a\u8005\u3068\u3057\u3066\u77e5\u3063\u3066\u304a\u304f\u3079\u304d &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":{"0":"post-3475","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-php","7":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/3475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3475"}],"version-history":[{"count":1,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/3475\/revisions"}],"predecessor-version":[{"id":3476,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/3475\/revisions\/3476"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}