4

I made this script to test the execution of PHP as a background process

foreach($tests as $test) { 
   exec("php test.php ".$test["id"]); 
} 

as suggested in php process background and How to add large number of event notification reminder via Google Calendar API using PHP? and php execute a background process

But the script does not run faster than when it was all in one script without the addition of test.php.

What am I doing wrong?

Thanks in advance!

1

1 Answer 1

8

exec() will block until the process you're exec'ing has completed - in otherwords, you're basically running your 'test.php' as a subroutine. At bare minimum you need to add a & to the command line arguments, which would put that exec()'d process into the background:

exec("php test.php {$test['id']} &");
Sign up to request clarification or add additional context in comments.

3 Comments

does not work the content of $test['id'] is only a number. so the command looks like exec('php test.php &150'); is it correct?
Woops, sorry, should be php test.php 150 &. The ampersand has to be the last character. I'll fix up the answer.
According to the manual, it also requires output redirection in order to run in the background. php test.php 150 > /dev/null &

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.