Php

如何檢查php內置伺服器是否正在執行

  • January 29, 2016

最新版本的 PHP 有一個內置的網路伺服器(用於非生產環境),可以使用php -S [...].

在嘗試啟動它之前,如何檢查它是否已經在伺服器上執行?

我意識到 hacky 方法是嘗試啟動它並註意錯誤消息Failed to listen on [...],但我認為可能有更清潔的方法 :-)

編輯:我忘了提到最終我希望能夠在腳本中檢查這一點,並且只有在伺服器尚未啟動時才啟動它。我也忘了提到我正在尋找一種適用於 Linux 的解決方案,但當然也歡迎使用 Windows 解決方案,以防有一天其他人會尋找它 :-)

由於我對 Paolo 答案的編輯被拒絕,這裡有一個更完整的答案:

ps aux | grep php

如果 php 目前正在執行,此命令將輸出如下內容:

pi        3245  0.0  0.5  21400  2416 pts/0    S    Jan29   0:02 php -S localhost:8000 -t /path/to/php/docroot
pi        3518  0.0  0.3   5220  1712 pts/0    S+   00:42   0:00 grep --color=auto php

第二行可以忽略,因為它只是自引用搜尋命令。此腳本將檢查伺服器是否正在執行,如果沒有則啟動它:

if ! ps aux | grep -v grep | grep -qs 'php -S localhost:8000';
then
 php -S localhost:8000 -t /path/to/php/docroot &>/dev/null &
fi

正如 Michael Hampton 已經建議的那樣,類似的命令ps aux | grep php將顯示 PHP 的網路伺服器是否已經啟動。

引用自:https://serverfault.com/questions/751241