Увидел такое решение с перенаправлением на сайте
php.net в комментариях. Создал отдельный файл false.php и перенаправил пользователя туда. Тем временем скрипт выполняется, а пользователь уже отсоединен:
ignore_user_abort(true);
set_time_limit(0);
header("Location: /false.php", true);
header("Connection: close", true);
header("Content-Encoding: none\r\n");
header("Content-Length: 0", true);
flush();
ob_flush();
Вся эта история нужна была для многопоточного выполнения команд. Производительность скрипта выросла в сотню раз.
Для сравнения:
Без ожидания: 122 задач выполнено за 28.913190126419 сек.
С ожиданием: 122 задач выполнено за 401.40130519867 сек.