質問: 外部のレンタルサーバ内のDBから、社内サーバのDBに自動でデータを送る方法を探しています。 DBはMySQL、言語はPHPです。 VPN等、外から社内へ入れる仕組みはありません。 一応できた方法としては 1社内のサーバよりバッチ等で、外部サーバに置いたPHPファイルAをキックする 2[PHPファイルA] データを取り出し、inputタグなどに出力する 3[PHPファイルA] 社内サーバ内のファイルBへPOST送信する 4[PHPファイルB] データを受け取る 上記の方法で可能なことは可能なのですが どうも違うやり方でもっとスマートな方法がありそうな気がします。 JSONでまとめて送信しようとCURL関数を試してみましたが ファイルBへのURLが通らずに失敗しました(社内のDNSサーバを通っていないのか?) 何かいい方法をご存知の方いらっしゃいましたら宜しくお願いします。
回答: 「VPN等、外から社内へ入れる仕組みはありません」とのことであれば、3でPOST送信はできません。 外部サーバのPHPファイルAのレスポンスでDBから取得したデータをJSONファイル等に変換して社内サーバに返してあげればよいと考えます。 処理の例を以下に示します。 (1)【社内サーバ】curlで外部サーバのPHPファイルAにリクエストする。 (2)【外部サーバ】PHPファイルAのロジックでMySQLサーバからデータを取得し、JSONファイルに変換して(1)のリクエストのレスポンスとして社内サーバへ返却する。 (3)【社内サーバ】受け取ったレスポンスを(1)のコマンド実行時に指定したフォルダに出力する。 サイズが大きい場合はデータサイズの制限やリクエストのタイムアウトに注意する必要があります。 PHPでWebAPIを作成する場合はFuelPHP、CakePHP、Symfonyなどのフレームワークを使用すると便利です。