JeuWeb - Crée ton jeu par navigateur

Version complète : Supprimer HTTP Header Silverlight / PHP
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Pages : 1 2 3
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.
Côté PHP, utilises-tu un procédé comme le ob_start et ob_flush pour retarder l'envoi des header ?


Sephi-Chan
(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
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
On utilise pas join mais implode ^^ :p
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)
(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
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.
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.
(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
Pages : 1 2 3