2009-07-04 2 views
4

브라우저로 전송할 데이터 스트림을 생성하고 사용자가 브라우저를 닫는 경우 PHP에서 스트림의 나머지 부분을 생성하거나 보내지 않아도된다고 말할 수 있습니까? 나는이 루프에 무언가를 삽입하려는 :PHP는 브라우저가 사라지는 시점을 알려줄 수 있습니까?

while (!feof($pipes[1])) { 
    echo fgets($pipes[1]); 
} 

내 대체 계획이 브라우저가 데이터를 생성하는 것 프로세스를 종료하는 다른 PHP 페이지를 칠 자바 스크립트으로 onUnload를 사용하는 것입니다,하지만이 경우 클리너 것 PHP가 내가 아무데도 울릴 때를 알 수있었습니다.

답변

1

register_shutdown_function()은 실행이 중지 될 때 실행되는 것으로 가정합니다. 나는 실제로 그것을 사용한 적이 없기 때문에 그것이 얼마나 잘 작동하는지 보증하지는 않겠지 만, 내가 완벽하다고 말할 수있을 것이라고 생각했습니다.

+0

닫기이 경우 사용자 중단시 데이터 처리를 중지하기 만하면됩니다. – Ballsacian1

1

정상적으로로드되면 스크립트가 자동으로 중단됩니다 (아약스 없음). 하지만 PHP를 통해 xmlhttprequest를 사용하여 일종의 긴 폴링을 구현하려는 경우 자바 스크립트를 사용하여 수행해야한다고 생각합니다. 그 이유는 PHP가이를 감지 할 수 없기 때문입니다. 또한 정확한 사례를 알고 싶습니다.

0

이 답변들은 제가 찾고있는 것을 지적했습니다. 기본 프로세스는이를 제거하기 위해 특별한주의가 필요했습니다. 나는 루프에서 뛰어 내릴 필요가 있었다. 다시 한번 고마워, Stack Overflow.

while (!feof($pipes[1]) && !connection_aborted()) 
{ 
    echo fgets($pipes[1]); 
} 

if (connection_aborted()) 
{ 
    exec('kill -4 '.$mypid); 
} 
관련 문제