PHP에서 실행과정을 요청페이지에 연속보여줄수 없나요

PHP에서 실행과정을 요청페이지에 연속보여줄수 없나요

QA

PHP에서 실행과정을 요청페이지에 연속보여줄수 없나요

본문

ajax로 서버에 주기적으로 요청보내는건 경험해보았습니다.

그런데 꼭 서버에서 실행되어 그 결과를 알수 있는 로직이 있는데요, 로직의 매 단계에서 PHP 가 현재 무얼 하고 있다는 걸 동적으로 웹브라우저에 현시하는 방법은 없을까요?

실례로, 이미지를 업로드 하면 PHP쪽에서

1. 리사이즈

2. 서버에 저장

3. 디비에 등록

4. 결과 출력

이런 4개의 단계가 작동한다고 할때

매 단계에서 웹브라우저에 

1. 이미지를 리사이징하고 있습니다.

2. 서버에 저장중입니다.

3. 디비에 이미지정보를 등록하고 있습니다.

4. 조작완료

이런식으로 매 단계로직이 실행될때마다 웹브라우저에 출력시키는 걸 어떻게 해야 할까요?

동적인 출력을 위해 웹소켓 같은걸 쓰고 싶지는 않습니다.

경험많은 고수님들 방조부탁드립니다.

이 질문에 댓글 쓰기 :

답변 2

PHP의 버퍼기능을 사용하면 가능합니다.  ob_ 로 시작되는 PHP함수들을 살펴보세요.

저의 경우 아래와 같이 함수 만들어 사용하는데 괜찮습니다.



/**
 * 실행시간이 오랜 어떤 로직이 도중도중 어떤 부분을 실행중인가를 동적으로 출력할 필요가 있을때 이 메소드를 사용하면 된다.
 * 수많은 공백을 덧붙이는것은 어떤 경우(Browser종류나, 서버형태 등)에는 하나씩하나씩 실시간 출력이 안될때도 있기때문이다.
 *  $msg 출력값
 *  $whitespace 공백개수
 */
function obfPrint($msg, $whitespace=5000) {
    $out = $msg.str_repeat(" ", $whitespace);
    echo $out;
    
    @ob_end_flush();
    @ob_flush();
    @flush();
    @ob_start();
}



// 1초간격으로(PHP에서 실행중인 로직이 1초걸린다고 가정) $i값 동적으로 출력
for ($i=0;$i<10;$i++)
{
    obfPrint($i."</br>",0);
    usleep(1000000);
}

 

무슨뜻인지...이미지를 리사이징 중입니다 알림이 나오고 싶은건가여?

upload.php 파일이 아래와 같은 로직들을 순차적으로 수행한다고 할때 매 로직실행단계에서
1. 리사이즈 // 이부분에서는 리사이징 하고있습니다
2. 서버에 저장 // 이부분에서는 서버에 저장하였습니다.
3. 디비에 등록 // 디비에 등록하였습니다.
4. 결과 출력
이렇게 웹 페이지에 동적으로 출력 하는 겁니다

답변을 작성하시기 전에 로그인 해주세요.
전체 9
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT