Простите, если это дублирующий вопрос, но я потратил большую часть часа на поиски и не смог найти ничего конкретного. Или я не знал, как сформулировать вопрос.
Проблема:
Я управляю веб-сайтом, который запускает приложение PHP, используя платформу CakePHP. У нас есть проблема, из-за которой, если вы хотите открыть несколько вкладок для одного и того же домена, вам нужно дождаться возвращения данных 1-го запроса, прежде чем будут возвращены данные другой вкладки.
например Допустим, я щелкаю ссылку, которая выполняет тяжелый запрос к базе данных и занимает 5 секунд, чтобы вернуться и отобразить страницу. Но после нажатия на эту ссылку, я также нажимаю некоторые другие ссылки для очень легких страниц. Эти другие вкладки не будут отображаться, пока первая вкладка не получит данные обратно с сервера.
Я также знаю, что обработка на стороне сервера выполняется асинхронно. потому что, даже если я загружаю 2 тяжелые вкладки, как только первая возвращает, вторая также возвращает и отображает страницу.
Итак … мой вопрос, это проблема, связанная с кодом или проблема конфигурации, и как мне исправить это?
стек:
Apache 2.2.14
PHP 5.3.2
CakePHP 2.4
Ubuntu 10.04
Любая помощь или указатели в правильном направлении будет высоко ценится.
Постскриптум Я знаю, что это возможно, потому что примерно год или два назад мне удалось заставить это работать, но это испортило кое-что с нашими сессиями, поэтому мне пришлось вернуться к тому, над чем я работал.
Это на самом деле функция браузера, хотя я не могу найти хорошую ссылку на него в настоящее время.
https://productforums.google.com/forum/#!topic/chrome/H0AHdeAXSFo
это тема, но на самом деле мало что показывает. Можно ли загрузить страницу, а затем загрузить результаты через AJAX? Вы не страдаете от тех же проблем.
РЕДАКТИРОВАТЬ:
Ответ выше неправильный …
Это вызвано блокировкой сеанса.
Пример 4 по http://php.net/manual/en/function.session-start.php
<?php
// If we know we don't need to change anything in the
// session, we can just read and close rightaway to avoid
// locking the session file and blocking other pages
session_start([
'cookie_lifetime' => 86400,
'read_and_close' => true,
]);
Других решений пока нет …