Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Edycja własnej sesji za pomocą handlera po jej rozpoczęciu
Forum PHP.pl > Forum > PHP
Terq
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ą:

  1. $handler->write($sid, $sdata);
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.
phpion
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ł).
Terq
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ć?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.