Что у вас за вебсевер? В настройках сервера можно определить, сколько одновременно запросов он может обрабатывать, а некоторые (например встроенный в php по ключу -S ) и вовсе умеют только один поток, остальные запросы в этот момент ждут.
Правильное и универсальное решение - вынести длительные задачи в сторонний сервис/процесс, запускаемый независимо (например php-cli запускаемый с помощью services а во время отладки просто в консоли или screen). Совсем правильно - организуйте ваш сервис в виде приложения с использованием например reactphp (websocket сервер например и проксируйте его через ваш веб сервер), при этом организуйте работу полностью асинхронно (есть методы для асинхронной работы со всем включая работу с файлом, т.е. ваш цыкл будет выглядеть как метод, который указан в качестве вызова успешной записи в файл для записи следующей порции данных)
Веб сервер не должен ждать долгие задачи а должен работать в режиме сигналов - процесс запущен, процесс закончен, команда отмены процесса...