函式名稱: EvLoop::invokePending()
適用版本: PHP 7.0.0 及以上
用法: EvLoop::invokePending() 函式用於執行掛起的事件迴圈中的所有待完成操作。它會檢查事件迴圈中所有已新增的掛起操作,並按照它們的優先順序順序執行。
示例:
$loop = new EvLoop();
// 建立一個I/O watcher
$fileWatcher = new EvIo(fopen('file.txt', 'r'), Ev::READ, function ($watcher) use ($loop) {
// 讀取檔案內容
$data = fread($watcher->data, 1024);
echo $data;
// 停止事件迴圈
$loop->stop();
});
// 啟動事件迴圈
$loop->run();
// 在事件迴圈中執行所有掛起的操作
EvLoop::invokePending();
在上面的示例中,我們建立了一個事件迴圈和一個I/O watcher,該watcher會讀取檔案內容並輸出。然後,我們使用 EvLoop::run()
啟動事件迴圈,它會等待I/O操作完成並觸發相應的回撥函式。最後,我們呼叫 EvLoop::invokePending()
來執行所有掛起的操作,以確保所有待完成操作都得到執行。
請注意,EvLoop::run()
和 EvLoop::invokePending()
需要在每個事件迴圈迭代之後輪流呼叫,以確保事件迴圈正常工作並處理所有掛起的操作。