4

重複の可能性:
PHP は、cron ジョブまたはコマンドラインから実行されているかどうかを検出できますか?

表形式のデータを適切に表示するために、PHPコマンドラインスクリプトのSTDOUTリソースが別のコマンドにパイプされているかどうかを判断しようとしています(出力が端末に直接送信される場合、表のセルがあるとよいようです)または別のコマンドでそのデータを検査しようとしている場合はそうで+-----+はありません。)awk

この回答を見つけた後、ストリームを操作するPHPマニュアルで見つけることができる他のすべての関数を使用してSTDOUTリソースを調べてみstream_get_meta_data()ましたが、どの場合でも、リソースは別のリソースにパイプされているかどうかにかかわらずまったく同じように見えます処理するかどうか。

PHPでこれを見つける方法はありますか?

4

1 に答える 1

5

posix_isattyPOSIX 拡張機能を持っていると仮定して使用できます(おそらくそうです):

posix_isatty(STDOUT)

true の場合、パイプに出力していません。 プログラムなどisattyでこれを行うための一般的な方法です。C

これは、特にパイプへの出力であることを確認するのではなく、対話型端末への出力であるかどうかのみをチェックすることに注意してください (パイプは 1 つではありません)。

于 2012-09-10T22:55:17.830 に答える