CakePHPアプリケーションのグローバルな「ServerStatus」フラグを作成しようとしています。アイデアは、メンテナンスのためにオフライン/オンラインモードを切り替えて、データがサーバーにプッシュされているときにサイトがオフラインになるようにすることです。JavaScriptのトグルとリダイレクトを設定していますが、発生している問題はグローバル変数自体にあります。
私は2つのことを試しましたが、どちらもbootstrap.phpファイルにあります。
(1)Configure Classを使用して初期ステータスを書き込み、(2)$GLOBALS配列を使用して初期値を書き込みました。
後でトグルがアクティブになったときにステータスを代替(非初期)値に変更しようとすると、変更に失敗します。私が知る限り、これは、bootstrap.phpにグローバル変数を書き込むと、それが定数のように機能し、初期値が後で変更をオーバーライドすることを意味します。
トグルは、私のデフォルトのレイアウトdefault.ctpの小さなスクリプトです。
<script type="text/javascript">
var charInputs = [];
setInterval(clearInputBuffer(), 20000);
function keyPressHandler(event)
{
var currChar = String.fromCharCode(event.charCode);
charInputs.push(currChar);
//alert(currChar + ' key pressed!');
checkForKeyPhrases(charInputs);
}
function checkForKeyPhrases(chars)
{
// Get inputted chars as a sequence
var seq = "";
for (var i=0; i < chars.length; i++)
seq += chars[i] + "";
// Check for "Maintenance Mode"
if (seq == ":maintenance")
{
alert("Maintenance mode... go!");
<?php
if ($GLOBALS['ServerOnline'])
{
$GLOBALS['status'] = 'down';
$GLOBALS['ServerOnline'] = false;
}
else
{
$GLOBALS['status'] = 'up';
$GLOBALS['ServerOnline'] = true;
}
?>
var temp = '<?php echo $GLOBALS['status']; ?>';
alert('Current Server Status: ' + temp);
clearInputBuffer();
}
else if (seq.indexOf('clear') > -1)
clearInputBuffer();
}
function clearInputBuffer()
{ charInputs = []; }
</script>
$GLOBALS['ServerOnline'] = true;
bootstrap.phpで、私は;と書きます。しかし、アラートがポップアップすると、常にtrueの初期値が登録され、現在のステータスとして「ダウン」が表示されます。それは決して変わりません。
これを、初期化ブートストラップファイルにグローバルを書き込むと後の変更が上書きされることを意味するように解釈するのが正しい場合、CakePHPアプリの動的グローバルの初期値を書き込むのに最適な場所はどこですか?私が間違っている場合、誰かが私が欠けているものを見ますか?
よろしくお願いします!