查詢

EvChild::createStopped()函式—用法及示例

「 建立一個EvChild物件,但該物件會被建立為“停止”狀態,即不會立即開始執行 」


函式名:EvChild::createStopped()

適用版本:PHP Ev extension 0.2.0 或更高版本

用法:EvChild::createStopped() 函式用於建立一個EvChild物件,但該物件會被建立為“停止”狀態,即不會立即開始執行。這種物件通常用於非同步處理子程序。可以在後續的程式碼中使用 EvChild::start() 方法來啟動該物件。

示例:

$loop = new EvLoop();

$child = EvChild::createStopped(function($watcher, $pid, $signum) {
    // 子程序結束時會執行這裡的回撥函式
    echo "子程序結束: " . $pid . ", 訊號: " . $signum . PHP_EOL;
});

// 手動設定子程序id
$child->setPid(1234);

// 啟用子程序的 watcher 事件
$child->start();

// 假設在某個時刻需要殺死子程序
posix_kill($child->pid, SIGKILL);

// 程式繼續執行其他操作

// 停止子程序的 watcher 事件
$child->stop();

// 輸出結果示例:
// 子程序結束: 1234, 訊號: 9

在上面的示例中,我們首先建立了一個 EvLoop 物件,然後使用 EvChild::createStopped() 函式建立了一個 EvChild 物件,並傳入一個回撥函式來處理子程序結束的情況。接下來,我們手動設定了子程序的 id,並透過呼叫 EvChild::start() 方法來啟動該物件的事件監聽。在需要結束子程序時,我們使用 posix_kill() 函式傳送了一個 SIGKILL 訊號。最後,透過呼叫 EvChild::stop() 方法停止了子程序的事件監聽。

補充糾錯
上一個函式: EvChild::__construct()函式
下一個函式: EvEmbed::createStopped()函式
熱門PHP函式
分享連結