First, I am not looking for ignore_user_abort. Instead, I look for a function to finalize the output and send the document to the user. After that, I'd like the php script to do additional process which takes another seconds without effects for the user, only background process.
There is no reason for the user to wait for this to be completed, too. The output is ready for catch up before already. Does PHP provide a feature for closing the connection to the user, but remain for a while on the server to complete the work?Answer1:
One of the best features of php-fpm You is fastcgi_finish_requests(). This will finish the session for the client side and continue the process at serverside. It's also best use-case for messaging as an alternative for queque or delayed processing by cron.
However, it's restricted to php-fpm!Answer2:
You should split your work into 2 files, (The one with the initial processing, which produces output), and the second, heavier one which takes several more seconds but should not make the user to wait until its completion.
Then, have the browser call it with either Ajax or a hidden
you could try using
curl(); to ping localhost and trigger another script execution to run any extra tasks you have.
Once the script has been run, add an entry into a queue table. Then run a cron job to process the queue, locking the record and then deleting them as they get processed, so if your crons overlap they don't do the same job twice.