サイト内で使用されているデータベース内の情報を更新するために、毎日一連のcronタスクを実行するWebサイトを構築しています。私は3つの環境設定を持っています:開発(私のコンピュータ)、ステージングとライブ。ステージングとライブの両方が共有ホスティングのアカウントです。私が持っている問題は、コードが実行されている環境に応じて、使用するデータベースアクセス資格情報を決定することです。理想的には3つすべて同じ資格情報を持っていますが、ステージングとライブの両方が共有サーバー上にあるため、データベースの名前を制御することはできません。自分のコンピューター上でライブデータベース名とアクセス資格情報をミラーリングしましたが、ステージングではこれを実行できません。Cronジョブがステージングサーバー上で実行されているかどうかの検出
if(environment === staging) {
//define db access constants for staging here
else {
//define db access constants for live or dev here
}}
通常、この種のもののために私は$ _SERVER [使用したい:私のcronタスクは、このような何かを実行したときに
私は何をしたい、自動的に正しい環境のための正しい資格情報を選択することです'SERVER_NAME']、これはCronで実行されているため、$ _SERVER auto globalは使用できません。どのような環境でスクリプトがcronジョブで実行されているかをどのように検出できますか?
は、配列にアクセスするときに '{'と ']'ではなく '{'と '}'でなければなりません。 – scoates
ありがとう、私はこれが私に解決策を与えたと思います。 $ argvに表示されるコマンドラインパラメータを使って変数をスクリプトに渡します。ステージングで追加のパラメータを渡すだけで、これを使用して使用する資格情報を決定します。 – Jeremy
私はCPanelインターフェースを通してサーバーにしかアクセスできないので、私はcrontabファイルにアクセスできないことを明確にすべきです。 – Jeremy