Кто-нибудь создал Session-подобный класс PHP в пользовательском коде (не нативном)? - PullRequest
7 голосов
/ 19 мая 2011

Нативная функциональность PHP Session великолепна, но, в конечном счете, она одиночная.Есть моменты, когда вам нужно поддерживать состояние для нескольких приложений и в рамках уже запущенного сеанса (например, в рамках приложения).Технически можно остановить / перезапустить сеанс после изменения session_name(), но это нецелесообразно / невозможно / небезопасно в большинстве приложений.Использование общего session.save_path также не подходит, если одно приложение хранит данные сеанса с помощью не дискового адаптера.

Нет причин, по которым функциональность в собственных сеансах не может быть реализована в пользовательском коде, так что любойсделали это?

Обновление 1: CI_Session действительно является реализацией пользовательского пространства с некоторым полезным кодом, но она тесно связана с CodeIgniter.

Обновление 2: Вот отличный API:

// setup
$saveHandler = new UserlandSession_SaveHandler_Files('5;/tmp');
$sess = new UserlandSession($saveHandler);
$sess->name('PHPSESSID2');
$sess->gc_maxlifetime = 86400;
$sess->setProxy($state); // passed by ref
// usage
$sess->start(); // stored string unserialized to $state
$state['foo'] = 'bar';
$sess->write_close(); // $state serialized to storage

Обновление 3: Я написал реализацию для PHP5.3.

Ответы [ 2 ]

2 голосов
/ 19 мая 2011

CodeIgniter имеет класс сеанса , который не использует собственные сеансы PHP.

0 голосов
/ 28 октября 2013

Я написал UserlandSession в ответ на это.

Это чисто PHP-реализация "сессий", которую можно использовать для соединения сессии между произвольными PHP-приложениями.Он не мешает собственным сеансам, имеет интерфейс хранения OO (более похожий на PHP 5.4) и имеет API, аналогичный собственным сеансам.

Он поставляется с файловой системой и PDO обработчики хранилища и интерфейс для облегчения написания ваших собственных.

...