Dance with Tech

プログラミングとか学んだことの備忘録ブログです。

PHPのスーパーグローバル変数の一部はcronでは動かないんだってばよ

f:id:kmatz90:20141220221620g:plain

AMIを使っていくつか作成したインスタンスAWS)からホスト名を取得して、それを別サーバーに渡す処理を作ろうとしました。

で、ホスト名以下のスーパーグローバル変数を使用して取得出来ました。

めでたしめでたし。

あとはこれをcronで回せばお終いっと♪

 

、cronを実行してログを確認したところ、エラーが返ってきたのです。

ファイルのパスとかを確認しても確実に合ってる。

何故にと思いググってみると、$_SERVER['SERVER_NAME']はcronでは動かないというショッキン&ファッキンな事実を目の当たりに。

ガ━━(゚Д゚;)━━━ン!!!!!

 

仕方ないので別の方法(any other way)を探すことに。

調べた結果、以下で取得出来るらしい。

試してみると、Private IPが返ってくる。

今回僕は外部サーバーとファイルのやりとりを行いたかったので、

Private IPではなく、Public IPがほしーのです。

f:id:kmatz90:20141220231722j:plain

他には、unixコマンドを使って、無理やりexecで動かすという方法もあるようですが、パフォーマンスに影響が出るというのと、あまりクールじゃないイメージがあるのでスルー。

 

結局、こんなんで時間かかり過ぎても無意味なので、

不本意ですがベタにdefineで定義することに。。

この辺りの解決策はないものか。。

 

※追記

有り難いことに、色々な方から「はてブ」のコメントでアドバイスを頂きました。

結論としては、cronでcurlを使って別のPHPファイルを呼び出し(http経由)、

そのPHPファイルでホストを取得する方法。

これがベストな解かなと思いました。

ありがとうございました!

 

パーフェクトPHP (PERFECT SERIES 3)

パーフェクトPHP (PERFECT SERIES 3)