作成
file_get_contents じゃなくて curl を使う理由
とにかく便利な file_get_contents ですが。以下のような問題があるので、ちょっと面倒でも cURL(カール) を使うほうが確実です。 ### demerit (デメリット) - タイムアウトが設定値通りに動かない。 - エラーが特定しにくい。 - 過去リクエストの結果が引き継がれる場合がある。らしい・・・ ###title curl がインストールされているかチェック ####source (PHPプログラムの場合) ####command (シェルの場合) # curl hogehoge.com ###memo 以下のようなエラーがでなければ curl はインストールされています。 ####error Call to undefined function curl_init ###title curl のインストール ####command (Linuxの場合) sudo apt-get install php-curl ####command (ラズパイの場合) sudo apt-get install curl ###title 参考ソース(PHP) ###memo curl_setopt関数で様々なパラメータを設定していきます。 ###source // cURLセッションの初期化 $conn = curl_init(); // 取得するURLを指定 curl_setopt($conn, CURLOPT_URL, 'http://hogehoge.com'); // 実行結果を文字列で返す。 curl_setopt($conn, CURLOPT_RETURNTRANSFER, true); // タイムアウトの設定 curl_setopt($conn, CURLOPT_TIMEOUT, 120 ); // 実行 $ret = curl_exec($conn); //セッションの終了 curl_close($conn); ###title2 https + basic認証 + POST を curl で取得。 ###memo https ・BASIC 認証 で POSTパラメーターを渡して結果を取得する場合は以下のようにします。 ###source $conn = curl_init(); curl_setopt($conn, CURLOPT_URL, 'http://hogehoge.com'); curl_setopt($conn, CURLOPT_TIMEOUT, 120 ); curl_setopt($conn, CURLOPT_RETURNTRANSFER, true); // サーバ証明書の検証は行わない。 curl_setopt($conn, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($conn, CURLOPT_SSL_VERIFYHOST, false); // POSTで送信 curl_setopt($conn, CURLOPT_POST, true); // BASIC認証 curl_setopt($conn, CURLOPT_USERPWD, 'ID:PASSWORD'); // パラメータを設定 $param = array("name" => 'hoge'); curl_setopt($conn, CURLOPT_POSTFIELDS, http_build_query($param)); $ret = curl_exec($conn); curl_close($conn);
wakatta 記法
投稿の仕方
基本的な記法
エンジニア向け記法
記法のサンプル
このコンテンツを見る