簡體   English   中英

PHP exec函數:重定向到dev / null退出腳本(Ratchet循環)

[英]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是一個阻塞命令,因為它等待輸出。
如果要啟動進程/守護程序,則應查看popenproc_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM