간단한 PHP 스크립트입니다 PHP 스크립트 aria2c에서 독서 STDOUT :다음
<?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 : 3S]
[# edb1dc 81MiB/100MiB (81 %) CN : 1 DL : 9.7MiB ETA는 : 1S]
[#의 edb1dc 92MiB/100MiB (92 %) CN : 1 DL : 10MiB]
I과 같은 라인을 얻을 필요 정보 수집을 위해 aria2c를 기다리지 않고도 "[# edb1dc 92MiB/100MiB (92 %) CN : 1 DL : 10MiB]" 현재 진행 상황.
필자가 콘솔 aria2c에서 똑같은 명령을 실행해도 괜찮습니다.
이 문제에 대한 해결책을 찾았습니까? –
Nope. 다른 소프트웨어를 사용했습니다. – user2848443