Suppose there are two scripts Requester.php and Provider.php, and Requester requires processing from Provider and makes an http request to it (Provider.php?data=’data’). In this situation, Provider quickly finds the answer, but to maintain the system must perform various updates throughout the database. Is there a way to immediately return the value to Requester, and then continue processing in Provider.
Psuedo Code
Provider.php { $answer = getAnswer($_GET['data']); echo $answer; //SIGNAL TO REQUESTER THAT WE ARE FINISHED processDBUpdates(); return; }
You basically want to signal the end of 1 process (return to the original
Requester.php) and spawn a new process (finishProvider.php). There is probably a more elegant way to pull this off, but I’ve managed this a couple different ways. All of them basically result in exec-ing a command in order to shell off the second process.adding the following
> /dev/null 2>&1 &to the end of your command will allow it to run in the background without inhibiting the actual execution of your current scriptSomething like the following may work for you:
— though you could do it as a command line PHP process as well.
You could also save the information that needs to be processed and handle the remaining processing on a cron job that re-creates the same sort of functionality without the need to exec.