3

PHPでデータを配列としてメモリにロードする必要がありますが、PHPで $array= array("1","2"); と書くと test.php では、ユーザーがリクエストするたびにこの $array 変数が初期化されます。ブラウザの更新ボタンを 100 回クリックして test.php を 100 回リクエストすると、この $array 変数が 100 回実行されます。

しかし、最初のリクエストで$array変数を1回だけ実行する必要があり、その後のtest.phpのリクエストでは$array変数を実行してはいけません.しかし、そのメモリの場所のみを使用してください.PHPでそれを行うにはどうすればよいですか.

しかし、JAVA SEVRVLET では実行が簡単で、サーブレット ライフサイクル メソッドの init() メソッドの 1 回の実行とそのサーブレットの後続の要求で $array 変数を記述するだけです init() メソッドを実行せずに service() メソッドを実行し、service() メソッドを実行しますメソッドは常にその $array メモリの場所を使用します。

$array 変数を一度初期化したいのですが、PHP で後続のリクエストからそのメモリ loc を使用します。PHP に可能性はありますか?

4

5 に答える 5

3

PHP は、Java サーブレット コンテナーとは異なる動作をします。すべての新しいリクエストは、基本的にPHPインタープリターのまったく新しいインスタンスを開始するため、リクエスト全体でグローバルアドレス空間を持っていません(通常、1人のユーザーのリクエスト全体で変数を保持するためにファイルに永続化されるユーザーごとのセッションがあります) .

それに近いかもしれないことは、PHPでmemcached を「データベース」として使用することですが、配列が必要になるたびに memcached サーバーにリクエストを送信する必要があります。そのため、配列 (変更されない場合) は、PHP ファイルで保持および初期化するのが最適だと思います。

于 2010-05-04T12:49:49.050 に答える
1

すべての変数はリクエストのシャットダウン時に破棄されます。php で必要なことを行う組み込みのメカニズムはありません。

于 2010-05-04T12:45:31.417 に答える
1

セッションを使用

ユーザーがtest.phpを開いたときにセッションを開始し、そのセッションで配列を設定します

<?php
session_start();

if(!isset($_SESSION['user_action'])){ $_SESSION['user_action'] = array("1","2"); } ?>

そのコードは、セッション変数「user_action」が設定されているかどうかを確認するだけで、設定されていない場合はその配列で設定されます。

その後、その変数を後で変更できます。

于 2010-05-04T12:42:56.520 に答える
0

PHPにはさまざまな種類の実行があります。
一般的には、PHP では不可能であり、問​​題ありません。

于 2010-05-04T12:42:26.557 に答える
-2

次のことを試すことができます。

<?php
/* test.php */
if (empty($GLOBALS['array'])) {
    $GLOBALS['array'] = array("1", "2");
}
?>
于 2010-05-04T12:43:37.070 に答える