存在しない値を参照渡しすると、PHPは値を作成してNULLに設定します。いくつかの関数で空の値をチェックしている間にメモリの増加が起きたときに気付いた。次の関数を取る:PHPはそれらを作成し、存在しない変数を渡すとき、しかし存在しない値への参照を使用すると、変数がNULLに設定されますか?
if(isset($foo))
{
$bar = $foo;
}
else
{
$bar = $default;
}
:
function v(&$v,$d=NULL){return isset($v)?$v:$d;}
$bar = v($foo, $default);
これは、の省略表現されるだろう。変数の場合、メソッド/関数が終了するとすぐに削除されますが、$ _GETや$ _POSTのようなスーパーグローバル配列を調べる場合、配列要素は決して削除されず、余分なメモリを使用します。
$request_with = v($_SERVER['HTTP_X_REQUESTED_WITH']);
なぜこれが起こると、それはPHPのTODO修正または値の他のいくつかのクレイジーな使用のための機能であれば誰でも説明できますか?
あなたのサーバ環境は何ですか – RobertPitt
Debian、Ubuntu、およびWindows XPのPHP 5.3.xはPHPFastcgiを実行しています。 – Xeoncross