Вызов скрипта Bash из PHP [duplicate]

Исправить исключение NullReferenceException можно с помощью Null-условных операторов в c # 6 и написать меньше кода для обработки нулевых проверок.

Он используется для проверки нуля до выполнения доступа к члену (?. ) или index (? [).

Пример

  var name = p?.Spouse?.FirstName;

эквивалентен:

    if (p != null)
    {
        if (p.Spouse != null)
        {
            name = p.Spouse.FirstName;
        }
    }

В результате имя будет нулевым когда p равно null или когда p.Spouse имеет значение null.

В противном случае имени переменной будет присвоено значение p.Spouse.FirstName.

Для получения дополнительной информации: Операторы с нулевым условием

56
задан Cristian 29 September 2010 в 16:05
поделиться

4 ответа

Вы можете запустить команду в фоновом режиме, добавив в конце & в конце:

exec('run_baby_run &');

. Но выполнение этого будет зависать с вашим скриптом, потому что:

Если программа запускается с помощью функции exec, чтобы она продолжала работать в фоновом режиме, выход программы должен быть перенаправлен в файл или другой выходной поток. В противном случае PHP зависнет до тех пор, пока выполнение программы не закончится.

Таким образом, вы можете перенаправить команду stdout команды в файл, если вы хотите увидеть ее позже или /dev/null, если вы хотите отбросить его как:

exec('run_baby_run > /dev/null &');
40
ответ дан codaddict 26 August 2018 в 01:25
поделиться

"exec nohup setsid your_command"

nohup позволяет вашей команде продолжать, даже если запущенный процесс может завершиться первым. Если это произойдет, сигнал SIGNUP будет отправлен в команду your_command, что приведет к ее завершению (если только он не поймает этот сигнал и не обратит на него внимания).

0
ответ дан jobeard 26 August 2018 в 01:25
поделиться

Это использует wget, чтобы уведомить URL-адрес чего-либо, не ожидая.

$command = 'wget -qO- http://test.com/data=data';
exec('nohup ' . $command . ' >> /dev/null 2>&1 & echo $!', $pid);

Это использует ls для обновления журнала без ожидания.

$command = 'ls -la > content.log';
exec('nohup ' . $command . ' >> /dev/null 2>&1 & echo $!', $pid);
6
ответ дан Leandro Tupone 26 August 2018 в 01:25
поделиться

Всегда полезно проверить документацию :

. Чтобы выполнить команду, не повредить ваш php-скрипт во время его запуска, запущенная вами программа не должен возвращаться к php. Для этого переадресуйте как stdout, так и stderr в / dev / null, а затем запустите его.

> /dev/null 2>&1 &

Чтобы выполнить команду и выпустить ее как другую процесс, который не зависит от потока apache для продолжения работы (не умрет, если кто-то отменяет страницу) запустит это:

exec('bash -c "exec nohup setsid your_command > /dev/null 2>&1 &"');

91
ответ дан yvan 26 August 2018 в 01:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: