сеанс должен быть синхронизирован. Когда A
пишет/сохраняет значение session
B
или another A
ожидание. Это необходимо для обработки сеансов на основе файлов.PHP session_start сериализует и блокирует все остальные, использующие один и тот же сеанс.
Но однажды A
загрузил сеанс (но теперь сохранил его модификации) B
также должно быть разрешено загрузить один и тот же сеанс. потому что загрузка откроет файл и приведет содержимое файла в память и закроется.
Есть ли причина блокировать все остальные скрипты в течение всего времени A
загружает сеанс и A
сохраняет сеанс. не может ли синхронизация выполняться только с помощью обработчика сохранения?
Так что два скрипта PHP никогда не могут работать одновременно. Если они используют один и тот же сеанс.
, например seslock.php
<?php
header('Content-Type: text/plain');
session_start();
if(isset($_GET['wait'])){
sleep(30);
echo "waiting\n";
}else{
echo "No Waiting\n";
}
?>
done
визит seslock.php
немедленно ответить, но seslock.php?wait
займет 30 секунд, чтобы ответить. Но проблема в том, что вы сначала запрашиваете seslock.php?wait
и только seslock.php
секунд. событие, то блок non-sleep
попросит вас подождать 30 секунд.
Почему этот блок не является моим вопросом. Я спрашиваю, почему он блокирует start to save
? вместо блокировки only save
?
действительно? Я не знал. Но какое средство? Таким образом, два сценария php, разделяющие сеанс, никогда не могут работать одновременно. нужно подождать другого, чтобы закончить. и что я спрашиваю Почему PHP предназначен для блокировки на 'start save ', а не только на' save'? –
Что вы подразумеваете под 'началом сохранения' и' save'? Я не получаю это –
, почему блокирование начала сеанса. блокировка только обработчика сеанса достаточно для сериализации и синхронизации –