首頁 >後端開發 >php教程 >如何在 PHP 中獲取即時進程輸出並優雅地終止進程?

如何在 PHP 中獲取即時進程輸出並優雅地終止進程?

DDD
DDD原創
2024-12-19 17:28:14627瀏覽

How Can I Get Real-Time Process Output and Gracefully Kill Processes in PHP?

PHP 中的即時流程輸出

在網頁上執行即時輸出的流程可以增強使用者體驗並提供即時的服務回饋。在 PHP 中,可以使用 proc_open() 函數來實現此目的。

取得即時輸出

要從行程取得即時輸出,請使用proc_open () 如下:

$cmd = "ping 127.0.0.1";
$descriptorspec = array(
    0 => array("pipe", "r"),
    1 => array("pipe", "w"),
    2 => array("pipe", "w")
);

$process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array());

// Display output
echo "<pre class="brush:php;toolbar:false">";
if (is_resource($process)) {
    while ($s = fgets($pipes[1])) {
        print $s;
        flush();
    }
}
echo "
";

在這段程式碼中, ping 進程的輸出是連續讀取的管道$pipes[1] 並顯示。

在頁面退出時終止進程

要在頁面退出時終止進程,請使用以下程式碼:

register_shutdown_function(function() use ($process) {
    proc_terminate($process);
    // Wait for process to terminate gracefully
    proc_close($process);
});

此程式碼註冊一個關閉函數,該函數在腳本退出時終止進程。它還優雅地等待進程完成後再關閉它。

透過利用 proc_open() 和 register_shutdown_function(),您可以在 PHP 中執行進程並取得其實時輸出。當頁面退出時,進程會自動終止,以防止任何延遲的系統資源。

以上是如何在 PHP 中獲取即時進程輸出並優雅地終止進程?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn