1
A
回答
0
passthru
的內部不會對您有太大幫助,因爲它們太低而不能被PHP重現。
我的目標是將輸出轉發到任何任意文件,而不僅僅是php:// stdout。
如果你想這樣做PHP的水平而無需首先讀取整個輸出到一個變量,我建議像popen
。這可以讓你打開一個指向進程的指針,從中你可以一點一點地讀取數據,並將數據一點一點地寫入文件(實際上這可能非常接近passthru
所做的)。例如:
while (($buffer = fread($p, 1024)) !== false) {
fwrite($file, $buffer);
}
但是,如果您正在使用命令行,那麼爲什麼不直接寫入文件呢?
exec('command > file');
0
執行命令後需要顯示二進制數據嗎?
您想如何改變標準行爲?
據我所知,passthru()的工作方式與exec()和system()類似,但也允許處理/顯示二進制數據,所以我的猜測是它將管道輸出從passthru )命令直接到二進制流。
請參閱http://php.net/manual/en/function.passthru.php。
我希望這可以幫助,否則我應該得到一票否決票。
1
爲什麼不使用shell_exec
並附加>> file
命令?
function exec_to_file($cmd,$file){
shell_exec(escapeshellcmd($cmd) . ' >> ' . $file);
}
0
到中繼可以ext/standard/exec.c中發現的源 - 它實際上是相當可讀的,應該可以直接用PHP編寫你自己的版本。
這聽起來像你需要做的只是使用popen來打開一個進程,然後你可以像讀取任何其他文件句柄一樣從它讀取輸出。
相關問題
- 1. passthru不工作在pdftk
- 2. passthru不能在Xampp中工作1.7.5
- 3. PHP passthru('cls')不能正常工作
- 4. shell_exec,popen,exec,passthru不能在codeigniter控制器中工作
- 5. COPY-ITEM Passthru在遇到錯誤時無法正常工作
- 6. 如何在PHP上使用sudo passthru
- 7. mysqldump passthru returncode的
- 8. passthru()centos LD_LIBRARY_PATH
- 9. 透明PNG imagemagick passthru
- 10. PHP ffmpeg flv流Passthru
- 11. PHP的passthru()vs shell_exec()
- 12. PHP passthru()函數結果?
- 13. Mailx passthru()與包含變量
- 14. Powershell啓動進程Java PassThru
- 15. PHP/passthru/mysqldump似乎超時
- 16. PHP passthru執行狀態
- 17. 如何讓passthru繪製進度條(例如w/scp)?
- 18. 如何在PHP中使用passthru顯示javac錯誤消息?
- 19. 如何在殺死一個php腳本時殺死passthru進程?
- 20. Ajax如果不工作。如何工作?
- 21. 如何工作
- 22. `===`如何工作?
- 23. 如何工作?
- 24. 如何工作?
- 25. 如何:(){:| :& } ;:工作
- 26. hgearman工人如何工作?
- 27. 如何在工作中安排工作
- 28. 工作目錄是如何工作的?
- 29. 如何工作正在工作
- 30. set_error_handler不工作我想如何工作
你可以參考PHP源代碼,而不是讓別人爲你做。爲什麼你想創建自己的功能類似的功能,爲什麼這個不適合你? – 2011-02-13 09:23:18
`passthru`最終是用C寫成的。答案應該與C內部相關,還是「PHP級別」解釋? – deceze 2011-02-13 09:23:27