Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 25.02.2015 Ostrzeżenie: (0%)
|
Sesję trzymam w redisie.
Zainstalowałem sobie do PHP Predis, który posiada handler do sesji, po jego zarejestrowaniu, z poziomu panelu administratora mogę edytować sesję użytkowników za pomocą: i innych metod z interfejsu SessionHandlerInterface. Mogę dzięki temu np ręcznie edytować wszystkie zmienne w sesji danego usera. Niestety, kiedy operacja ta wykonywana jest po rozpoczęciu sesji za pomocą session_start(); mogę edytować wszystkie sesje z wyjątkiem mojej, obecnie trwającej. Tą trwającą mogę edytować tylko klasycznie np poprzez session_update (który mi nie pasuje, bo jest nie do końca użyteczny), czy deklarowanie zmiennych sesji. Czy jest jakaś opcja żeby to obejść? Oczywiście swoją sesję mogę edytować przed jej rozpoczęciem, ale w panelu administracyjnym muszę najpierw sprawdzać czy sesja należy do admina, który ma takie uprawnienia, wiec to rozwiązanie odpada. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
Domyślam się, że chodzi tutaj o blokowanie pliku sesji. Gdy ją rozpoczniesz nakładana jest blokada na plik więc nie masz możliwości ingerencji w zawartość pliku sesji. Więcej informacji tutaj:
http://php.net/manual/en/function.session-write-close.php Cytat [...] session data is locked to prevent concurrent writes only one script may operate on a session at any time. Zastonowiłbym się zatem czy na pewno możesz ingerować w sesje innych użytkowników w każdej sytuacji. Wydaje mi się, że nie, jeśli sesja jest "w trakcie" (tj. skrypt rozpoczął pracę, ale jej nie zakończył). |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 25.02.2015 Ostrzeżenie: (0%)
|
Faktycznie, jeśli przed edycją sesji użyję session_write_close(); mogę już edytować swoją sesję.
W takim razie pewnie masz rację, ze tym, że sesji nie można edytować tylko wtedy kiedy skrypt nadal wykonuje prace. Wygląda na to, że kiedy skrypt jakiegoś użytkownika wykonuje się bardzo długo, to wtedy nie mogę tej edycji wykonać. Co wtedy należy zrobić i czy jest sens cokolwiek robić? Ten post edytował Terq 26.02.2015, 15:40:23 |
|
|
|
![]() ![]() |
|
Aktualny czas: 25.12.2025 - 03:05 |