![](/img/trans.png)
[英]Where will my errors be recorded when running a php script using exec()? exec('php script.php > /dev/null &');
[英]PHP exec function : redirect to dev/null to exit script ( Ratchet loop )
我正在使用棘輪來構建telnet / php程序。
我需要能夠檢查服務器循環是否正在運行,以及是否無法通過php exec命令啟動它,然后將啟動循環的信息發送給客戶端。
我有以下幾行:
$file = "php " . ABS_PATH . "inc/lib/telnet/telnet_server.php > /dev/null &";
exec($file);
print "done";
不幸的是,該腳本似乎掛在exec部分中,因此我無法將信息發送給客戶端。
我在EasyPHP環境中本地工作,因此我需要能夠先在Windows下然后在Linux Web服務器上測試結果。
任何幫助表示贊賞...
提前謝謝!
exec是一個阻塞命令,因為它等待輸出。
如果要啟動進程/守護程序,則應查看popen或proc_open 。
由於您可能想將數據發送到流程,因此需要后者。
您可以使用proc_get_status檢索和存儲PID(進程ID),以便稍后檢查進程是否已經在運行。
好的,這里的評論部分似乎有一個有效的答案: PHP手冊
希望這對某人有幫助^^
我前一段時間遇到這個問題,並寫了一個簡潔的小功能,可在Windows和Linux上運行,以便在后台運行進程
function execInBackground($cmd) {
if (substr(php_uname(), 0, 7) == "Windows"){
pclose(popen("start /B ". $cmd, "r"));
}
else {
exec($cmd . " > /dev/null &");
}
}
用法非常簡單,在您的情況下為execInBackground("php " . ABS_PATH . "inc/lib/telnet/telnet_server.php");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.