Почему может зависать сайт на PHP до закрытия всех вкладок?
Бывает зависает наш сайт у пользователя. Открываешь новые вкладки, а он крутит загрузку и не открывает.
Нужно закрыть все вкладки с сайтом получается подождать секунд 15 и снова открыть, тогда откроется.
При этому когда у этого пользователя не работает - у других с других машин всё работает. И даже если на этой же машине открыть сайт в другом браузере в этот момент - он откроется нормально. Т.е. зависание из под того браузера, где работаешь, т.е. он там какой-то запрос обработать не может видимо, но при этом и соединение не рвёт, пока вручную не закроешь все вкладки не разрывает. А потом когда разорвёт - снова нормально открывается.
Сам сайт на хостинге, vds'ка на debian'е.
Откройте вкладку Network и проверьте, скорее всего, что-то очень долго загружается, а так как в браузере ограничено кол-во потоков на загрузку, то браузер будет ждать их освобождения.
На сервере что-то такое делается, что скрипт продолжает выполняться. Если так и должно быть - нужно читать ответы ниже и закрывать сессии, если так не должно быть - нужно искать почему не заканчиваются скрипты
Для правильного вопроса надо знать половину ответа
Поведение очень похоже на блокировку файла сессий.
При запуске скрипта открывается сессия (session_start), файл блокируется. При попытке открыть ту же сессию в другом скрипте будет ожидание освобождения файла сессии.
Решение - в начале скрипта, особенно долго выполняющегося, открывать сессию, забирать из неё все нужные данные и сразу закрывать сессию (session_write_close). При необходимости изменить данные в сессии открывать её снова, менять данные и тут же закрывать.
Как вариант - переносить хранение сессий в базу данных.
99% что блокируется сессия.
Когда PHP обрабатывает запрос, он по умолчанию открывает сессию, а закрывает только тогда, когда код завершает свою работу. Проблема в том, что файловые сессии блокируются. Если какой то поток открыл сессию, то другие потоки будут ждать пока она не закроется.
Решение этой проблемы - уход от хранения сессий в файловой системе, обычно в таком случае выбирают memcache.