명령 줄 출력 업데이트 (예 : 진행률)
명령 줄의 간단한 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-ie-for-progress
'developer tip' 카테고리의 다른 글
jQuery-유효성 검사 규칙을 동적으로 추가하는 방법 (0) | 2020.12.10 |
---|---|
GNU autotools : 디버그 / 릴리스 타겟? (0) | 2020.12.10 |
paintComponent는 어떻게 작동합니까? (0) | 2020.12.09 |
Android ViewGroup 충돌 : null 개체 참조의 'int android.view.View.mViewFlags'필드에서 읽기 시도 (0) | 2020.12.09 |
JS가있는 웹 사이트는 개발자 도구가 활성화 될 때까지 IE9에서 작동하지 않습니다. (0) | 2020.12.09 |