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中文網其他相關文章!