下面是簡單的PHP腳本:閱讀STDOUT從PHP腳本aria2c
<?php
is_resource($process = proc_open('aria2c http://speedtest.rinet.ru/file100m.dat', [
['pipe', 'r'],
['pipe', 'w'],
['file', '/tmp/error-output.txt', 'a']
], $pipes, '/tmp', [])) || die();
fclose($pipes[0]);
fpassthru($pipes[1]);
fclose($pipes[1]);
proc_close($process);
的問題是,在輸出進度數據是「停滯」,直到aria2c完成。當aria2c進程結束時,它會立即將所有輸出突發到我的腳本。這與fpassthru()沒有關係,我嘗試了fread(),結果相同。
流量:
[注意]文件已經存在。重命名爲/tmp/file100m.dat.4。
< ...巨大延遲,然後突發...>
[#edb1dc 70MiB/100MiB(70%)CN:1 DL:8.4MiB ETA:3秒]
[#edb1dc 81MiB/100MiB(81%)CN:1 DL:9.7MiB ETA:1秒]
[#edb1dc 92MiB/100MiB(92%)CN:1 DL:10MiB]
我需要得到狀的線「[#edb1dc 92MiB/100MiB(92%)CN:1 DL:10MiB]」,無需等待aria2c結束收集信息a回合目前的進展。
更何況,如果我在控制檯運行完全相同的命令aria2c工作正常。
您是否找到了解決此問題的解決方案? –
沒有。使用另一個軟件。 – user2848443