2013-07-28 2 views
0

Nous nous en remettons depuis un certain temps et avons récemment changé de serveur. Fondamentalement, à la fin d'un fichier php, nous fermons la connexion et faisons un gros travail que nous ne voulons pas que le navigateur raccroche. Dans mon expérience cette méthode que nous utilisons ferme la connexion des navigateurs et l'utilisateur ne vit rien. Sur ce nouveau serveur, la connexion reste ouverte et provoque le blocage du navigateur.PHP ob_end_flush() ne ferme pas la connexion au navigateur

J'ai fait ce fichier de test très simple à jouer avec:

<?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

Je ne peux pas reproduire. S'il vous plaît poster 'phpinfo()'. –

Répondre

1

Cela n'a rien à voir avec PHP. Votre nouveau serveur prend probablement en charge les connexions Keep Alive (que votre navigateur sollicite très certainement), ce qui permet à la connexion de rester ouverte pour les demandes suivantes. Essayez d'ajouter Header ("Connection: close") à votre script ou désactivez la prise en charge de Keep Alive sur votre serveur Web.

+0

header ("Connection: close") est dans le code d'origine ci-dessus. Je vais contacter le propriétaire du serveur et regarder dans "Keep Alive". Je reviendrai quand je trouverai une réponse, merci de me pointer dans la bonne direction. – Sean256

+0

Mon hôte prétend qu'il n'a pas activé "Keep Alive". – Sean256

Questions connexes