サーバーA
でA.php
を実行した際に、同時にサーバーB
にあるB.php
も実行させたいです。
具体的には、A.php
からB.php
に必要な情報をPOSTして、B.php
側でも処理を実行させます。
GitHubのwebhookみたいなイメージなのですが、言葉たらずでしたら申し訳ありません。
上記のような方法を取るなら、下記の様に考えていますが、
このような動きで、他に良い方法はありますでしょうか?
また、下記の方法で気をつける点、ツッコミどころがあればご教授頂けると幸いです。
何卒よろしくお願い致します。
【A.php
からcurlでPOST】
$url = "http://b.example.com/B.php";
$postdata = [
"field1" => "xxx",
"field2" => "123"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
$result = curl_exec($ch);
curl_close($ch);
【B.php
で受け取って実行】
if (!isset($_POST)) {
exit;
}
//POSTがあった場合の処理
mkdir($_POST['field1']);
:
:
(等々)
追記
例に出したドメインを修正しました。
>そのB.phpが、UIがあって人間も入力可能な画面をもたせるのか、単にPOSTを受け付けて簡単なステータスだけ返すだけなのか、によっても回答が割れそうです。
UIは持ちません。POSTを受けて、その値を使用した処理を行います。A.php側にB.phpの成功・失敗等が返せたらと思っています。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
0
いいんじゃないでしょうか。
#という回答しかできないです。何か問題など発生しているのであれば具体的に質問に記載いただければと思います。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
外部にPOSTしたい場合、一般的にはhttp_request2というライブラリを使う事が多いです。
http://pear.php.net/package/HTTP_Request2/redirected
例えば決済処理とかですね。
結果を戻り値として取得出来ますので、結果次第でechoする内容を変える等工夫が出来ます。
使い方についてはググれば山ほど記事があると思いますので省きます。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
B.phpもCakePHPで動かす、かつ、人間が直接POSTすることはない、という仮定が成り立つなら、RESTfulに作ってもいいかもね。
REST
http://book.cakephp.org/2.0/ja/development/rest.html
CakePHP3でREST APIをちゃちゃっと作る方法 - Qiita
http://qiita.com/Junkins/items/e15b4d6fab6ecb31e8e2
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.32%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
Y.H.
2016/12/09 17:25
serverB.com は存在するドメインですので、例示に使用するドメインには存在しないことが保証されている example.comやexample.jpなど(およびそのサブドメイン)を使用ください。
m6u
2016/12/09 17:33
そのB.phpが、UIがあって人間も入力可能な画面をもたせるのか、単にPOSTを受け付けて簡単なステータスだけ返すだけなのか、によっても回答が割れそうです。