2009-09-23 5 views
0

다른 것들 중에서도 전자 메일을 보내는 컨트롤러가 있습니다. 전자 메일 보내기가 시작되기 전에 사용자에게 메시지를 표시해야합니다 (그렇지 않으면 화면이 멈추는 것처럼 보입니다).
그래서 컨트롤러의 끝 부분에 도달하기 전에 컨트롤러의 시작 부분에 설정된 메시지를 반향 출력합니까? 아니면 다른 방향으로 모두 함께 생각해야합니까?ZF에서 출력을 플러시하는 방법

답변

1

어쩌면보십시오 :

<?php 
//... 
public function someAction() 
{ 
    echo "Something"; 
    ob_flush();flush(); 
} 

forum post이 문제에 대해 설명합니다. 그들은 다음을 제안합니다 :

<?php 
$frontController = Zend_Controller_Front::getInstance(); 
$frontController->setParam('disableOutputBuffering', true); 

그리고 나서 ob_flush();flush(); 기술을 수행하십시오.

+0

나는 거기에 있어야 할 레이아웃이 필요합니다. –

+0

그런 경우 컨트롤러가 실행 된 후에 레이아웃이 렌더링되기 때문에 뷰가로드 될 때 일종의 AJAX 요청을 할 수 있습니다. – Chris

+0

그렇게 생각해 ... 고마워! –

0

종료 기능을 사용하여 이메일을 보내보십시오. 또한 출력 버퍼를 플러시하면 사용자가 렌더링 된 페이지를 먼저 볼 수있게됩니다. 코드 호출에서 : 질문의 메일의 경우

function send_email($params) { 
    ob_flush();flush(); 
    // Send your email here 
} 
1

:

register_shutdown_function('send_email', $params); 

그리고 한 다음과 같은 기능을 가지고있다.

요청에 따라 메시지를 보내야하는 시점에 따라 메시지 큐 (어쩌면 db 테이블)를 만들고 해당 테이블에 레코드를 작성한 다음 cron 프로세스를 실행하는 것이 좋습니다 대기열을 소비하고, 보내지 않은 메시지를 보내고, 보내지 않은 것으로 표시합니다.

관련 문제