Статические переменные во всех сеансах

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

Есть ли такая возможность в PHP? Благодаря

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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"