Как скрипт PHP CLI может определить, работает ли он в фоновом режиме? - PullRequest
1 голос
/ 22 января 2012

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

Так есть ли способ для сценария PHP обнаружить, что он был запущен в фоновом режиме?

Ответы [ 2 ]

1 голос
/ 22 января 2012

Существует Unix часто задаваемый вопрос (который я нашел через в этом посте переполнения стека ), который в основном утверждает, что это не может быть надежно выполнено.Одно из предложений, которое дает статья, - проверить, является ли stdin терминалом:

sh: if [ -t 0 ]; then ... fi
C: if(isatty(0)) { ... }

Я согласен с комментарием Пекки о том, что вы должны просто указать параметр для скрипта.Параметр -i (для интерактивного просмотра) иногда используется для этой цели.Если этот параметр не передан, вы можете предположить, что находитесь в «автоматическом» режиме.

1 голос
/ 22 января 2012

Невозможно определить, работает ли он в фоновом режиме. Я до сих пор не нашел способа сделать.

Одним из способов может быть просмотр списка процессов и проверка статуса /usr/bin/php

Лучший способ - использовать параметр (скажем, --daemon). Когда этот параметр передается, он будет работать в фоновом режиме, в противном случае он будет печатать полезную информацию во внешнем интерфейсе.

Вы можете создать демон, используя System_Daemon пакет pear.

...