Мне кажется, что подход к обработке такого большого количества данных во время одного выполнения некорректен. По моему опыту, обработанный PHP-код не предназначен для работы в течение длительных периодов времени и обработки множества данных. Для этого требуется очень, очень осторожное управление памятью. Добавьте негерметичный сценарий третьей стороны, и у вас есть рецепт, чтобы биться головой об стол.
Возможно, вместо того, чтобы пытаться запустить все 20 тыс. Файлов одновременно, вы можете обрабатывать несколько сотен за раз, сохранять результаты где-то посредником, например, в базе данных MySQL, а затем собирать результаты после обработки всех файлов.