1. Хреновый вариант
fastcgi_finish_request. Эту функцию можно поставить перед выполнением большой задачи, она ответит вебсерверу - он отдаст данные клиенту, а код продолжит работать, клиент перестанет ждать и пойдет по своим делам. Вариант херовый потому что можно легко получить ситуацию когда все воркеры выполняют тяжелые задачи - а клиенты получают 502.
Ну и работает только в режиме fast_cgi.
2. Менее хреновый вариант. Перенести задачу в отдельны скрипт и отправить его в бэкграунд через exec и nohup.
exec('/usr/bin/nohup php script.php >/dev/null 2>&1 &');
Минус - в том что вы ровно так же можете получить вагон запущенных скриптов и сожрать уже не все воркеры php-fpm а все ресурсы сервера
3. Вариант - очереди. Тут без особых минусов кроме того как я хрен знает можно ли это легко привязать к wordpress