Почему может зависать сайт на PHP до закрытия всех вкладок?
99% что блокируется сессия.
Когда PHP обрабатывает запрос, он по умолчанию открывает сессию, а закрывает только тогда, когда код завершает свою работу. Проблема в том, что файловые сессии блокируются. Если какой то поток открыл сессию, то другие потоки будут ждать пока она не закроется.
Решение этой проблемы - уход от хранения сессий в файловой системе, обычно в таком случае выбирают memcache.
Поведение очень похоже на блокировку файла сессий.
При запуске скрипта открывается сессия (session_start), файл блокируется. При попытке открыть ту же сессию в другом скрипте будет ожидание освобождения файла сессии.
Решение - в начале скрипта, особенно долго выполняющегося, открывать сессию, забирать из неё все нужные данные и сразу закрывать сессию (session_write_close). При необходимости изменить данные в сессии открывать её снова, менять данные и тут же закрывать.
Как вариант - переносить хранение сессий в базу данных.