У меня есть сценарий A, который вызывает session_start () вверху и создает некоторые переменные сеанса. Затем скрипт создает вызов ajax, вызывающий скрипт B:
$("#galleryContent").load("B.php", {op : 'get_thumbs' }, function() { $('.galleryThumb').draggable(thumb_dragOps); } s);
B нуждается в доступе к скрипту переменных сеанса. Создайте так, чтобы session_start () попытался получить переменные. Но B session_start () зависает.
Я здесь что-то не так?
благодаря
Это связано с блокировкой; PHP блокирует файл сеанса во время его записи. Чтобы исправить это, закройте файл сеанса, когда вы закончите изменение переменных сеанса с помощью session_write_close()
.
У меня была именно эта проблема в прошлом, и проблема была в блокировке. Просто не забудьте явно указать PHP, что вы сделали изменение сеанса, используя session_write_close()
, и все должно быть в порядке.
Из документации :
Данные сеанса обычно сохраняются после завершения вашего сценария без необходимости вызова
session_write_close()
, но поскольку данные сеанса заблокированы для предотвращения одновременной записи, только один скрипт может работать в сеансе в любое время. При использовании наборов фреймов вместе с сеансами вы будете наблюдать за загрузкой кадров по одной из-за этой блокировки. Вы можете сократить время, необходимое для загрузки всех кадров, завершив сеанс, как только будут выполнены все изменения в переменных сеанса.
Примечание. Вы также можете настроить собственный обработчик сеанса и полностью исключить эту проблему блокировки файлов, сохраняя информацию о сеансе в базе данных. В любых масштабах это в значительной степени необходимо.