Статические переменные через сессии

В ASP.NET, если я объявляю переменную (или объект) статичный (или если я делаю одиночный элемент) у меня может быть он, сохраняются через несколько сессий многочисленных пользователей (это, он зарегистрировался в объеме сервера) так, чтобы я не инициализировал его в каждом запросе.

Есть ли в PHP такая функция?Спасибо

11
задан Uwe Keim 1 December 2016 в 10:35
поделиться

5 ответов

Вы можете настроить APC и использовать функции apc_store и apc_fetch.

http://us.php.net/manual/en/book.apc.php

6
ответ дан 3 December 2019 в 08:29
поделиться

Вы можете сделать это с помощью расширения PHP (написанного на C).

Но если вы хотите написать это на PHP, нет. Лучшая альтернатива - записывать переменную в файл (file_put_contents ()) в конце каждого запроса и открывать его в начале каждого запроса (file_get_contents ()).

Эта альтернатива не будет работать для сайтов с большим объемом, потому что процессы будут выполнять чтение / запись одновременно, и весь мир будет использовать все BLAAA-WOOO-EEE-WOHHH-BOOOM.

4
ответ дан 3 December 2019 в 08:29
поделиться

Этого не существует в PHP, однако вы можете сериализовать данные и поместить их в файл на жестком диске или в / dev / shm /. Вы также можете использовать memcache.

Если вы поместите свои данные в / dev / shm / или используете кэш памяти, данные исчезнут при перезагрузке.

4
ответ дан 3 December 2019 в 08:29
поделиться

К сожалению, нет. Ключевое слово PHP static ограничено только текущим экземпляром скрипта.

Чтобы сохранить данные в экземплярах сценария для одного и того же сеанса, вы должны использовать функции обработки сеанса .

Чтобы сохранять данные между сеансами, вам нужно будет использовать что-то вроде memcache , однако это требует дополнительных настроек на стороне сервера.

0
ответ дан 3 December 2019 в 08:29
поделиться

вы можете хранить сериализованные копии объекта внутри сеанса

class test{
  private static $instance;
  public property;
  private __construct(){}
  public getInstace(){
    if(!self::$instance){
      self::$instance = new test;
    }
    return self::$instance;
  }
}

$p = test->getInstance();
$p->property = "Howdy";
$_SESSION["p"] = $p;

следующая страница

$p = $_SESSION["p"];
echo $p->property; // "Howdy"
0
ответ дан 3 December 2019 в 08:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: