質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.32%

A.phpを実行する際に、別のサーバーのB.phpも実行したい

受付中

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,632

smnsmn

score 173

サーバーAA.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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Y.H.

    2016/12/09 17:25

    serverB.com は存在するドメインですので、例示に使用するドメインには存在しないことが保証されている example.comやexample.jpなど(およびそのサブドメイン)を使用ください。

    キャンセル

  • m6u

    2016/12/09 17:33

    そのB.phpが、UIがあって人間も入力可能な画面をもたせるのか、単にPOSTを受け付けて簡単なステータスだけ返すだけなのか、によっても回答が割れそうです。

    キャンセル

回答 3

0

いいんじゃないでしょうか。

#という回答しかできないです。何か問題など発生しているのであれば具体的に質問に記載いただければと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/12/09 17:46

    ありがとうございます。
    セキュリティ的にどうなのか、または、このような処理をしなくても、全く別の方法でA.phpを動かしたときにB.phpも同時に実行できる方法がもしあればと思い質問致しました。
    色々試したいと思います。

    キャンセル

  • 2016/12/09 17:54 編集

    一般的なセキュリティ対策(各種インジェクション対策やCXX対策など)は行っている前提で、b.example.comはA.phpの動作しているAサーバーからのみアクセス(リクエスト)できればよいのであれば、以下のような構成も有効です(というか一般的です。)
    ・リクエスト元IPアドレスでAサーバー以外はアクセス制限する
    ・そもそもb.example.comにグローバルIPを付与せず、AサーバーからはローカルIPでアクセス可能な構成にする

    キャンセル

0

外部にPOSTしたい場合、一般的にはhttp_request2というライブラリを使う事が多いです。
http://pear.php.net/package/HTTP_Request2/redirected
例えば決済処理とかですね。
結果を戻り値として取得出来ますので、結果次第でechoする内容を変える等工夫が出来ます。

使い方についてはググれば山ほど記事があると思いますので省きます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/12/19 20:14

    解答ありがとうございます。
    こういったライブラリもあるのですね。とても勉強になりました。
    触ってみたいと思います。

    キャンセル

  • 2016/12/20 10:12

    決してニッチなライブラリというわけではなく、外部サーバとのやりとりを多く行う開発者にとっては割と頻繁に使う、メジャーなライブラリです。
    これを機にきちんと理解してみるものいいと思いますよ。

    キャンセル

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/12/19 20:12

    RESTというのを始めて知りました。
    勉強になります、ありがとうございます!!
    やってみたいと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.32%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る