Почему shell_exec выполняет более 1 процесса? - PullRequest
0 голосов
/ 07 июля 2011

Я не понимаю, почему происходит более 1 процесса, когда я запускаю run.php один раз из браузера

В коде PHP у меня есть следующее:

run.php

<?php
shell_exec("php theprocess.php > /dev/null 2>&1 &");
?>

theprocess.php

<?php
$z = 1;
while ($z <= 20) {
    echo $z . "\n";
    $z++;
    sleep(3);
}
?>

Я запускаю run.php из браузера (например: http://localhost/run.php)

Тогда я набрал: ps aux | grep php

username@ [~]# ps aux | grep php
username 27272  0.0  1.5  89504 64468 ?        R    17:33   0:00 php theprocess.php
username 27274  0.0  1.2  89504 49872 ?        R    17:33   0:00 php theprocess.php
username 27276  0.0  0.6  89504 28676 ?        R    17:33   0:00 php theprocess.php
username 27278  0.0  0.0  22280  3704 ?        R    17:33   0:00 php theprocess.php
username 27280  0.0  0.0   1940   508 ?        S+   17:33   0:00 grep php

Я не понимаю, почему он показывает более 1 процесса theprocess.php?

Кроме того, почему он все еще работает в фоновом режиме? это должно прекратить theprocess.php завершить задачу. Как это можно сделать?

1 Ответ

1 голос
/ 07 июля 2011

Я исправил проблему!

При запуске скрипта с веб-страницы он не рассматривается как PHP cli.

Заменить

shell_exec("/usr/bin/php theprocess.php > /dev/null 2>&1 &");

К

shell_exec("/usr/bin/php-cli theprocess.php > /dev/null 2>&1 &");

У меня больше не работает многократная обработка в фоновом режиме.

...