php執行shell腳本,得到標準輸出和錯誤輸出
1.問題
在php程式碼中需要執行一個shell腳本,希望分別得到它的標準輸出(stdout)和錯誤輸出(stderr)。用shell的重定向把標準輸出和錯誤輸出放到文件中再用php讀取文件,可行,但輸出文件的內容傳回php後就不再需要,有沒有辦法把shell的輸出重定向到變數?
要執行腳本的功能,無法用php本身完成(執行R語言的腳本),並且需要把常規輸出和錯誤輸出都回饋。
2.已有嘗試
shell裡面的重定向可以把標準輸出和錯誤輸出分別放到檔案中,但產生臨時檔案。
my_cmd 1>out.txt 2>err.txt
php再讀取out.txt
和err.txt
檔案內容進行回傳。
這樣做的缺點:產生了中間文件。如果shell指令my_cmd
執行的時間比較長(可能要幾分鐘),那麼同一用戶如果短時間內多次發起http請求使得php執行my_cmd
,則需要每次out.txt
和err. txt
的名字都不同,以免寫入衝突。這就產生了很多不必要的中間文件。即使及時刪除它們,對於I/O還是有開銷,希望能避免。
php的exec()
函數:
<code>string exec ( string $command [, array &$output [, int &$return_var ]] )</code>
裡面的參數$output
看起來只能得到「運行腳本時螢幕輸出」的內容,是stdout或stdout和stderr的混合,不能分開獲得。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

CakePHP 是 PHP 的開源框架。它旨在使應用程式的開發、部署和維護變得更加容易。 CakePHP 基於類似 MVC 的架構,功能強大且易於掌握。模型、視圖和控制器 gu

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

CakePHP 是一個開源MVC 框架。它使應用程式的開發、部署和維護變得更加容易。 CakePHP 有許多函式庫可以減少大多數常見任務的過載。

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲
