PHP Java в памяти базы данных - PullRequest
3 голосов
/ 04 мая 2010

мне нужно загрузить данные в виде массива в память в PHP.but в PHP, если я напишу $ array = array ("1", "2"); в test.php, а затем переменную $ array инициализируется каждый раз, когда пользователь запрашивает. Если мы запрашиваем test.php 100 раз, нажимая кнопку обновления браузера 100 раз, то эта переменная $ array будет выполнена 100 раз.

но мне нужно выполнить переменную $ array только один раз для первого запроса, а последующий запрос test.php не должен выполнять переменную $ array. Но использовать только это расположение в памяти. Как я могу это сделать в PHP.

но в JAVA SEVRVLET это легко выполнить, просто запишите переменную $ array за одноразовое выполнение метода init () метода жизненного цикла сервлета и последующий запрос этого сервлета не выполняет метод init (), но метод service (), но метод service () всегда использует это место в памяти массива $.

все, что я хочу инициализировать $ переменную массива один раз, но использовать эту память loc из последующего запроса в PHP. Есть ли возможность в PHP?

Ответы [ 5 ]

3 голосов
/ 04 мая 2010

PHP работает иначе, чем контейнер сервлетов Java. Каждый новый запрос в основном запускает совершенно новый экземпляр интерпретатора PHP, поэтому у вас нет глобального адресного пространства между запросами (у вас есть сеанс на пользователя, который обычно сохраняется в файле для хранения переменных между запросами для одного пользователя) ,

Что может приблизиться к этому, так это использовать memcached с PHP в качестве "базы данных", но вам придется каждый раз отправлять запрос на сервер memcached вам нужен ваш массив. Вот почему я думаю, что ваш массив (если он не изменяется) лучше хранить и инициализировать в файле PHP.

1 голос
/ 04 мая 2010

Все переменные уничтожаются при закрытии запроса, в php нет встроенного механизма, чтобы делать то, что вы хотите.

1 голос
/ 04 мая 2010

использовать сессию

начать сеанс, когда пользователь открывает test.php и установить массив в этом сеансе

<code><?php
session_start();</p>

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

Этот код будет просто проверять, установлена ​​ли переменная сеанса "user_action", если нет, то он будет установлен с этим массивом.

Затем вы можете изменить эту переменную позже.

0 голосов
/ 04 мая 2010

Вы можете попробовать следующее:

<?php
/* test.php */
if (empty($GLOBALS['array'])) {
    $GLOBALS['array'] = array("1", "2");
}
?>
0 голосов
/ 04 мая 2010

PHP имеет другой тип исполнения.
В общем, в PHP это невозможно и все нормально.

...