2011-01-10 3 views
2

Я сделал этот сценарий, чтобы проверить выполнение PHP как фоновый процессPHP в фоновом режиме Exec() функции

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

как предложено в php process background и How to add large number of event notification reminder via Google Calendar API using PHP? и php execute a background process

Но сценарий не работает быстрее, чем когда все было в одном скрипте без добавления test.php.

Что я делаю неправильно?

Заранее благодарен!

+0

Подобный вопрос я ответил несколько дней назад: HTTP: // stackoverflow.com/questions/4626860/how-can-i-run-a-php-script-in-the-background-after-a-form-is-submitted/4628279#4628279 –

ответ

7

exec() будет блокироваться до тех пор, пока процесс, который вы исполняете, не завершил - другими словами, вы в основном используете свой «test.php» в качестве подпрограммы. На минимум нужно добавить & к аргументам командной строки, которая будет положить, что Exec() 'd процесс в фоновом режиме:

exec("php test.php {$test['id']} &"); 
+0

не работает содержимое $ test ['id'] - это только число. , поэтому команда выглядит как exec ('php test.php &150'); Правильно ли это? – albertopriore

+0

Woops, извините, должно быть 'php test.php 150 &'. Амперсанд должен быть последним персонажем. –

+0

В соответствии с [manual] (http://php.net/manual/en/function.exec.php) для переназначения также требуется перенаправление вывода. php test.php 150>/dev/null & ' – jpschroeder

Смежные вопросы