명령줄 출력 업데이트(즉, 진행
명령줄에서 간단한 PHP 스크립트로 진행률 측정기를 보여주고 싶습니다.보는 대신에
Progress: 0%
Progress: 1%
etc...
예를 들어 git clone이 하는 것처럼 숫자만 변경하고 이전 번호를 대체하고 싶습니다.Resolving deltas: 100% (8522/8522), done.
.
이것을 검색하는 동안 같은 질문이 Perl로 답변된 것을 발견했는데, 완벽하지만 PHP에서는 찾을 수 없었습니다.가능합니까?만약 아니라면, C에게 의지하겠습니다.
감사해요.
업데이트: C++ 버전에 관심 있는 사람이 있다면, 여기 있습니다.
이 작업은 ANSI 이스케이프 시퀀스를 사용하여 수행할 수 있습니다. 목록은 여기를 참조하십시오.
PHP에서는 다음을 사용합니다."\033"
그것이 표시되었을 때ESC
그 페이지에
당신의 경우, 다음과 같은 것을 사용할 수 있습니다.
echo "Progress : "; // 5 characters of padding at the end
for ($i=0 ; $i<=100 ; $i++) {
echo "\033[5D"; // Move 5 characters backward
echo str_pad($i, 3, ' ', STR_PAD_LEFT) . " %"; // Output is always 5 characters long
sleep(1); // wait for a while, so we see the animation
}
항상 5개의 문자를 추가하고 항상 동일한 양의 데이터를 표시하여 항상 동일한 문자 수만큼 뒤로 이동할 수 있도록 약간 단순화했습니다.
하지만 물론 필요하다면 훨씬 더 복잡한 작업을 할 수 있어야 합니다;-)
그리고 다른 많은 흥미로운 탈출 시퀀스가 있습니다: 예를 들어, 색상은 출력을 상당히 향상시킬 수 있습니다;-)
오래된 스레드를 통해 기록하기만 하면 됩니다.고급 ANSI 이스케이프 시퀀스를 사용하여 커서를 뒤로 이동하는 대신 다음 줄 "\n"의 시작 대신 "\r"을 사용하여 커서를 줄의 처음으로 다시 이동합니다.에코 뒤에 몇 개의 공백을 추가하여 이전에 있었던 모든 항목을 덮어씁니다. 예를 들어 다음과 같습니다.
for ($i=0 ; $i<=100 ; $i++) {
echo "Progress: $i % \r";
sleep(1);
}
언급URL : https://stackoverflow.com/questions/5265288/update-command-line-output-i-e-for-progress
'programing' 카테고리의 다른 글
NgFor에서 Ng 모델을 사용한 각도 2 - 2방향 바인딩 (0) | 2023.07.25 |
---|---|
PowerShell & 출력의 개별 라인에 타임스탬프를 추가하려면 어떻게 해야 합니까? (0) | 2023.07.25 |
%in%의 반대: 벡터에 지정된 값이 있는 행 제외 (0) | 2023.06.15 |
ASP.NET 마이그레이션 '복합 기본 키 오류' 추가 유창한 API 사용 방법 (0) | 2023.06.15 |
Oracle에서 보기를 만드는 데 사용되는 SQL을 검색하는 방법은 무엇입니까? (0) | 2023.06.15 |