Спросите Apache, если сеанс все еще существует, от ID - PullRequest
3 голосов
/ 24 мая 2011

Я хотел бы знать, как проверить, жив ли сеанс PHP, благодаря заданному идентификатору.Это или что-то, что могло бы дать мне доступ к списку активного сеанса.

Я нашел в Интернете некоторую связанную информацию, но не смог получить правильный ответ.

Чтобы сообщить вамнемного о фоне, я пишу веб-сайт, который позволяет пользователям изменять контент (например, статьи).И поскольку я не хочу, чтобы они изменяли один и тот же ресурс одновременно, мне пришлось подумать о системе защиты.

Таким образом, идея заключалась в том, что каждый открытый ресурс будет заблокирован и связан с идентификатором сеанса.,Когда закончите, пользователь освободит его.Но, конечно, ничто не мешает ему просто закрыть окно, позволяя содержимому заблокироваться в письменной форме.

Поэтому я должен иметь возможность проверить, жив ли сеанс и все еще ли блокировка является законной.

Ответы [ 2 ]

2 голосов
/ 12 октября 2011

Я знаю, что это может быть более старый вопрос, но «лучший» ответ на ваш вопрос находится здесь: http://www.codeguru.com/forum/archive/index.php/t-372050.html

Вот что он говорит: Файл php.ini содержит параметр sesison.save_path, который определяет, куда PHP помещает файлы, содержащие данные сеанса. Как только сессия устарела, она будет удалена PHP во время следующей сборки мусора. Следовательно, тест на наличие файла для этого сеанса должен быть достаточным, чтобы определить, является ли сеанс все еще действительным.

$session_id = 'session_id';
$save_path = ini_get('session.save_path');

if (! $save_path) {
$save_path = '.'; // if this value is blank, it defaults to the current directory
}

if (! file_exists($save_path . '/sess_' $session_id)) {
unlink($session_id); // or whatever your file is called
}
2 голосов
/ 24 мая 2011

Существует довольно простое решение вашей проблемы:

При открытии страницы сохраняйте идентификатор пользователя и текущую метку времени в некоторых столбцах, используемых для блокировки элемента.На странице включите JavaScript, чтобы каждую минуту вызывать какой-либо сценарий, который обновляет отметку времени, поэтому, пока пользователь находится на этой странице, отметка времени никогда не будет старше 1 минуты.Просто не позволяйте другим людям редактировать тот же элемент, если отметка времени не старше 1 минуты (и нескольких секунд).

...