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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
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. 결과 출력
이렇게 웹 페이지에 동적으로 출력 하는 겁니다

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

회원로그인

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