[解決済み] PHP で非同期 GET リクエストを行うにはどうしたらいいですか?
2023-01-02 18:14:48
質問
別のサーバーにある別のスクリプトに簡単な GET リクエストを行いたいと思います。 どのようにすればよいのでしょうか?
あるケースでは、出力を必要とせずに、外部スクリプトを要求する必要があるだけです。
make_request('http://www.externalsite.com/script1.php?variable=45'); //example usage
2番目のケースでは、テキスト出力を取得する必要があります。
$output = make_request('http://www.externalsite.com/script2.php?variable=45');
echo $output; //string output
正直なところ、これはCURLの仕事ではないので、CURLをいじくりまわしたくはないのです。また、私は PECL 拡張を持っていないので、http_get を使用したくありません。
fsockopen は動作しますか?もしそうなら、ファイルの内容を読み込まずにこれを行うにはどうしたらよいでしょうか。他の方法はないのでしょうか?
すべてありがとうございます。
更新情報
最初のケースでは、スクリプトが何かを返すのを待ちたくはない、と付け加えるべきでした。私が理解するように file_get_contents() はページが完全にロードされるのを待つなど?
どのように解決するのですか?
file_get_contents
は、あなたが望むものを行います
$output = file_get_contents('http://www.example.com/');
echo $output;
編集:GETリクエストを発射してすぐに返すのも一つの手です。
引用元 http://petewarden.typepad.com/searchbrowser/2008/06/how-to-post-an.html
function curl_post_async($url, $params)
{
foreach ($params as $key => &$val) {
if (is_array($val)) $val = implode(',', $val);
$post_params[] = $key.'='.urlencode($val);
}
$post_string = implode('&', $post_params);
$parts=parse_url($url);
$fp = fsockopen($parts['host'],
isset($parts['port'])?$parts['port']:80,
$errno, $errstr, 30);
$out = "POST ".$parts['path']." HTTP/1.1\r\n";
$out.= "Host: ".$parts['host']."\r\n";
$out.= "Content-Type: application/x-www-form-urlencoded\r\n";
$out.= "Content-Length: ".strlen($post_string)."\r\n";
$out.= "Connection: Close\r\n\r\n";
if (isset($post_string)) $out.= $post_string;
fwrite($fp, $out);
fclose($fp);
}
これは、ソケットをオープンし、getリクエストを発行し、すぐにソケットをクローズしてリターンするものです。
関連
-
[解決済み】mysqli::query(): mysqli をフェッチできない
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] HTTP GET(リクエストボディ付き
-
[解決済み] YouTube APIからYouTubeビデオのサムネイルを取得する方法を教えてください。
-
[解決済み] PHPのエラーを表示させるにはどうしたらいいですか?
-
[解決済み] cURL呼び出しによるHTTPリクエストを使用してヘッダーを送信する方法は?
-
[解決済み] どうすればjQueryに非同期ではなく、同期のAjaxリクエストを実行させることができますか?
-
[解決済み] PHPでリクエストタイプを検出する(GET, POST, PUT, DELETE)
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] コマンドの同期がとれていない。
-
[解決済み】PHP 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み】pdo - 非オブジェクトのメンバー関数prepare()への呼び出し【重複】。
-
[解決済み】XAMPPエラー: www.example.com:443:0 サーバー証明書に、サーバー名と一致するIDが含まれていません。
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み] php5パッケージのインストール候補がない (Ubuntu 16.04)
-
[解決済み】MySQLのカラム数が1行目の値数と一致しない【非公開
-
[解決済み】PHPからGETリクエストを送信する方法は?
-
[解決済み】phpでバックグラウンドプロセスを実行する
-
[解決済み】PHPで非同期HTTPリクエストを行う方法