ledy
ledy

Reputation: 1617

PHP: continue after output is complete

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?

Upvotes: 0

Views: 620

Answers (5)

rabby
rabby

Reputation: 66

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!

Upvotes: 1

Waygood
Waygood

Reputation: 2693

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.

Upvotes: 0

mikegreiling
mikegreiling

Reputation: 1161

you could try using curl(); to ping localhost and trigger another script execution to run any extra tasks you have.

Upvotes: 0

Antoine
Antoine

Reputation: 77

looks like what you want is some ajax stuff. if you send the response back to the user, the script will end. but using javascript you can start an ajax call to another php script that will not change anything for the user.

Upvotes: 0

Madara's Ghost
Madara's Ghost

Reputation: 174957

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 iframe.

You could even have the second script return a success/fail notice and catch that with JavaScript to notify the user, without affecting his actual initial output.

Upvotes: 0

Related Questions