2012-09-10 17 views
4

可能重複:
Can PHP detect if its run from a cron job or from the command line?如何確定一個PHP CLI腳本的輸出是否被傳送到另一個命令?

我試圖確定是否對PHP命令行腳本的STDOUT資源正在被輸送到另一個命令與否,爲了以適當地顯示錶格數據(如果輸出直接到終端,看起來好的是在+-----+邊框中包裝表格單元;但如果試圖用awk或其他命令檢查該數據,則看起來不錯;)

未找到this answer,我試着用stream_get_meta_data()和我在PHP手冊中找到的所有其他函數檢查STDOUT資源,這些函數在流上操作,但在任何情況下,資源看起來都是一樣的到另一個進程或沒有。

有沒有什麼辦法可以在PHP中找到它?

+0

[PHP可以檢測它是否從cron作業或從命令行運行?](http://stackoverflow.com/questions/190759/can-php-detect-if-its-run-from -a-cron-job-or-from-the-command-line)和http://stackoverflow.com/questions/11327367/detect-if-a-php-script-is-being-run-interactively-or-不是或http://stackoverflow.com/questions/3648863/detect-if-stdin-is-a-tty-device-terminal-or-pipe-in​​-php – mario

回答

4

您可以使用posix_isatty假設你有POSIX擴展名(你可能做的):

posix_isatty(STDOUT) 

如果這是真的,那麼你是不是輸出到管道。 isatty是在C程序和其他程序中執行此操作的常用方法。

請注意,這不會檢查它是否輸出到管道,特別是它是否輸出到交互式終端(管道不是一個管道)。

+0

這工作!它不完全是我想要的,因爲如果例如將輸出重定向到文件,我仍然希望在腳本輸出中包含一些圖形元素。但它至少可以對腳本輸出進行粗略的控制。 – goldenapples

相關問題