JeuWeb - Crée ton jeu par navigateur
Supprimer HTTP Header Silverlight / PHP - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Supprimer HTTP Header Silverlight / PHP (/showthread.php?tid=4946)

Pages : 1 2 3


Supprimer HTTP Header Silverlight / PHP - Furukoo - 27-06-2010

Bonjour
Je cherche à supprime certaines entêtes HTTP sur une connection Client Silverlight et serveur php (LAMP).
Voilà un example ce que qui existe actuellement :

Client :

POST /furukoov2/php/write_msg_lp.php HTTP/1.1
Accept: */*
Content-Length: 92
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)
Host: www.furukoo.fr
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: libstat=1276427129584; acceptcookie=ok

Réponse :

HTTP/1.1 200 OK
Date: Sun, 27 Jun 2010 09:22:39 GMT
Server: Apache
Keep-Alive: timeout=8, max=10
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type:

Timing :

Date début de connection: Sun, 27 Jun 2010 11:22:37
Temps de connection: 0 ms
Durée échange headers HTTP: 238 ms
Durée transmission données: 6 ms

Je cherche à diminuer le temps d'échanges des entêtes HTTP (238ms) !

Est il possible de supprimer certaines entêtes de façon à gagner sur le temps d'échange des headers ?

Merci pour votre aide.


RE: Supprimer HTTP Header Silverlight / PHP - Sephi-Chan - 27-06-2010

Côté PHP, utilises-tu un procédé comme le ob_start et ob_flush pour retarder l'envoi des header ?


Sephi-Chan


RE: Supprimer HTTP Header Silverlight / PHP - Furukoo - 27-06-2010

(27-06-2010, 12:16 PM)Sephi-Chan a écrit : Côté PHP, utilises-tu un procédé comme le ob_start et ob_flush pour retarder l'envoi des header ?

Sephi-Chan

Non c'est juste une lecture de fichier :

Code PHP :
<?php 
foreach (array_diff(scandir(DM),array('.','..')) as $k => $v)
{
if(
LMT<$v)
{
if(
$j==0)
{
$j++;
echo
'[';
}
else
{
echo
',';
}
readfile(DM.'/'.$v,'r');
}
}
if(
$j!=0)
{
echo
']';
exit;
}

Qui renvoie une chaine formaté JSON


RE: Supprimer HTTP Header Silverlight / PHP - Sephi-Chan - 27-06-2010

Alors je ne vois pas… Essaye de retirer des morceaux du script pour cibler ce qui gonfle ton temps de réponse.

En attendant des nouvelles à ce propos, je te propose une alternative plus efficace (testée sur 100 000 itérations) et surtout plus lisible pour générer ton JSON :


$directory = DM; // Seules les variables peuvent être interpolées dans une chaîne à double quote.
$filenames = array_diff(scandir($directory), array('.', '..'));
$contents = array();

foreach($filenames as $filename){
if(LMT < $filename){
array_push($contents, file_get_contents("{$directory}/{$filename}"));
}
}

echo json_encode($contents);

// On aurait pu utiliser join() à la place du json_encode, mais c'est moins lisibile :
// echo '[', join(', ', $contents), ']';


Sephi-Chan


RE: Supprimer HTTP Header Silverlight / PHP - Anthor - 27-06-2010

On utilise pas join mais implode ^^ :p


RE: Supprimer HTTP Header Silverlight / PHP - Furukoo - 27-06-2010

Merci beaucoup pour cette optimisation Big Grin
C'est trés sympa. Je mets en oeuvre tout de suite.
(J'ai au max une dizaine de fichiers dans mon répertoire, c'est juste un tampon de messages)


RE: Supprimer HTTP Header Silverlight / PHP - Sephi-Chan - 27-06-2010

(27-06-2010, 04:34 PM)Furukoo a écrit : Merci beaucoup pour cette optimisation Big Grin
C'est trés sympa. Je mets en oeuvre tout de suite.
(J'ai au max une dizaine de fichiers dans mon répertoire, c'est juste un tampon de messages)

Je t'en prie, mais ça risque de ne pas faire diminuer ton temps de réponse ! Sad


(27-06-2010, 03:51 PM)Anthor a écrit : On utilise pas join mais implode ^^ :p

Le code est plus lisible avec join, car le nom est parlant et à du sens (join signifie réunir, implode signifie imploser…).
C'est donc une grossière erreur de la part des développeurs de PHP, qui contribue à l'incohérence du langage.

La preuve, la documentation décrit la fonctionne comme cela :

PHP: implode a écrit :Join array elements with a glue string.


Une de plus avec l'ordre des arguments :

PHP: implode a écrit :Note: implode() can, for historical reasons, accept its parameters in either order. For consistency with explode(), however, it may be less confusing to use the documented order of arguments.

PHP dans toute sa splendeur ! Smile



Sephi-Chan


RE: Supprimer HTTP Header Silverlight / PHP - Furukoo - 27-06-2010

Le temps d'échanges des Headers reste quand même supérieur au temps d'échange des données.
Pour info après modifs du script php

Date début de connection: Sun, 27 Jun 2010 17:02:57
Temps de connection: 0 ms
Durée échange headers HTTP: 200 ms
Durée transmission données: 0 ms

C'est sur le temps d'échange des headers que j'aimerai agir, si c'est possible bien évidement.


RE: Supprimer HTTP Header Silverlight / PHP - Anthor - 27-06-2010

Il n'empêche que :
Cette fonction est un alias de : implode().

Il faut donc utiliser en priorité implode qui est sûr de ne pas disparaitre ^^


@Furukoo: Ca ne veux rien dire, si ton script envoi un header au début et le reste à la fin, le calcul des données entre dedans.


RE: Supprimer HTTP Header Silverlight / PHP - Sephi-Chan - 27-06-2010

(27-06-2010, 04:59 PM)Furukoo a écrit : Le temps d'échanges des Headers reste quand même supérieur au temps d'échange des données.
Pour info après modifs du script php

Date début de connection: Sun, 27 Jun 2010 17:02:57
Temps de connection: 0 ms
Durée échange headers HTTP: 200 ms
Durée transmission données: 0 ms

C'est sur le temps d'échange des headers que j'aimerai agir, si c'est possible bien évidement.

Quelle application donne ces valeurs et ces libellé ? Car je les soupçonne d'être inexacts.
Le programme est-il disponible en anglais ? Si oui, que deviennent ces libellés ?


(27-06-2010, 05:00 PM)Anthor a écrit : Il n'empêche que :
Cette fonction est un alias de : implode().

Il faut donc utiliser en priorité implode qui est sûr de ne pas disparaitre ^^

Oui, hélas pour les développeurs PHP… Devoir choisir entre maintenabilité et lisibilité…
De toute façon, dans ce cas précis, il vaut mieux utiliser directement json_encode. Smile


Sephi-Chan