2013-07-28 4 views
0

Мы полагаемся на это в течение некоторого времени и недавно сменили серверы. В основном в конце php-файла мы закрываем соединение и делаем тяжелый подъем, мы не хотим, чтобы браузер зависал. По моему опыту, этот метод, который мы используем, закрывает соединение браузеров, и пользователь ничего не испытывает. На этом новом сервере соединение остается открытым и вызывает зависание браузера.PHP ob_end_flush() не закрывает соединение с браузером

Я сделал это очень простой тестовый файл, чтобы играть с ним:

<?php 
ob_end_clean(); 
ob_start(); 
?> 

<html> 
<head> 
<title></title> 
</head> 
<body> 
testing... 
</body> 
</html> 

<? 
$size = ob_get_length(); 
header("Content-Length: $size"); 
header('Connection: close'); 
ob_end_flush(); 

//anything below this should NOT hang up the browser 
sleep(30); //but it does :-(
?> 
+0

Невозможно воспроизвести. Пожалуйста, напишите 'phpinfo()'. –

ответ

1

Это не имеет ничего общего с PHP. Ваш новый сервер, вероятно, поддерживает соединения Keep Alive (которые, безусловно, вызывают у вашего браузера), заставляя соединение оставаться открытым для последующих запросов. Попробуйте добавить заголовок («Соединение: закрыть») в свой скрипт или отключить поддержку Keep Alive на вашем веб-сервере.

+0

header ("Connection: close") находится в исходном коде выше. Я свяжусь с владельцем сервера и посмотрю на «Keep Alive». Я вернусь, когда найду ответ, спасибо, что указал мне в правильном направлении. – Sean256

+0

Мой хозяин утверждает, что у них нет «Keep Alive». – Sean256

Смежные вопросы