У меня есть действительно странная проблема.
Я написал файловый менеджер в PHP с возможностью загрузки файлов – это прекрасно работает. весь скрипт построен как один большой файл.
теперь, при загрузке большого файла, я не могу использовать сценарий одновременно, скажем, для просмотра содержимого папки. он ничего не делает, кроме как продолжать загрузку. как только загрузка закончена, все работает снова.
есть ли что-то, что мешает PHP разбора одного и того же файла одновременно? потому что другие скрипты работают как шарм, независимо от того, загружаюсь я или нет.
помощь или ссылки на документацию высоко оценены 🙂
Вы используете сеансы?
Если да, то это, вероятно, проблема. Обработчик сеанса по умолчанию использует файлы, которые необходимо заблокировать при выполнении кода с поддержкой сеанса. Практически это означает, что каждый пользователь последовательно выполняет PHP-файлы. Чтобы решить эту проблему, вы должны использовать специальный обработчик сеанса, который использует БД. Прочтите это .
Редактирование: я хочу указать, что писать пользовательский обработчик сеанса без блокировки может быть сложным и ввести различные тонкие ошибки. Прочитайте больше документов об этом, если вам нужно это сделать!
Редактирование 2: Иногда использование session_write_close () для закрытия сеанса, когда больше не требуется, достаточно (см. Комментарии).
Daremon является правильным, но вам не нужно использовать другой обработчик сеанса. Если вы вызове session_write_close()
перед началом отправки файла, блокировка файла сеанса будет выпущена, а остальные сценарии должны быть продолжены.