04 07 2002 à 00:38


Voila je suis tombé sur un article de phpbuilder.com ( http://www.phpbuilder.com/columns/ ) > > ya une partie caching (sous rubrique "Site Operation" mais je capte qu'dalle à l'Englè ... je suis allé sur certains sites fr mais il n'y a que quelques articles pas franchement a ma portés donc si quelque s'y connaissais un peu à l'optimisation des scripts php : fa m'intereffe ...

[HS] > Génial le moteur de recherche de Nexen...

ixka (mickey - )
40 ans (cholet (49))
ixka@wanadoo.fr

C'est deux courgettes qui sont dans une poile. Y'en a une qui dit : "Il fait chaud ici.", et l'autre répond : "Haaa!!! une courgette qui parle !!!" ... désolé ... ;)





  04 07 2002 à 00:51


sur la doc officielle http://dev.nexen.net/docs/php/annotee/function.... ils ne parlent que de la "bufferisation" pour la compression...

ixka (mickey - )
40 ans (cholet (49))
ixka@wanadoo.fr

C'est deux courgettes qui sont dans une poile. Y'en a une qui dit : "Il fait chaud ici.", et l'autre répond : "Haaa!!! une courgette qui parle !!!" ... désolé ... ;)





  04 07 2002 à 00:55


Ben disons qu'il existe pas vraiment d'optimisation a proprement parler, juste quelques petites 'techniques' de ninja

Par exemple lorsque tu veux faire un lien au lieu de faire :
(...)
echo " <a href=\"$page\"> $lien </a> ";
(...)

Tu fais quelque chose dans ce style :
(...)
?> <a href=" <?=$page;?> "> <?=$lien;?> </a> <?
(...)

En gros tu évite de faire parser le HTML par PHP. Sinon t'as des petites techniques pour l'optimisation des requetes SQL. Par exemple pour un script d'authentification au lieu de faire :

$query = "SELECT * FROM $table WHERE login='$login' AND passorwd='$password'";
$result = mysql_query($query);

Tu fais :

$query = "SELECT id FROM $table WHERE login='$login' AND passorwd='$password'";
$result = mysql_query($query);


Parce que récupérer un int (le chanmp id est de type integer), utilise moins de ressources que récupérer toute la ligne (ou même un champ de type char).

Bref il y a bcp d'autres techniques, mais ca s'apprend a force de coder...

medgi (mickey - )
41 ans (Strasbourg)
medgi@artysm.org | 163906994
http://www.artysm.org

Demain, hier sera aujourd'hui.





  04 07 2002 à 09:08


sauf que faut aussi éviter de trop balancer entre le code php et le code html... ainsi si tu ouvres et fermes des tags <? et ?> a tout bout de champ, c'est pas l'ideal non plus...

et puis tiens a propos de l'optimisation en SQL, je cherche un moyen de pouvoir exécuter une requete identique sur plusieurs tables, juste en changeant le nom...

ainsi je vais ma requete :
SELECT * FROM $table
avec €table qui prend différentes valeurs... le probleme c'est que comme tu l'as dis, ca ne sert a rien de récupérer toutes les colonnes, et je ne peux pas spécifier un nom pour la colonne vu que mon champ d'id a un nom différent dans chaque table.
Alors je voulais savoir si il y avait moyen de remplacer le nom du champ par un numéro qui serait le numéro de la colonne qu'on veut récupérer, comme ca plus de probleme de nom de colonne (ex : SELECT 0 FROM $table).
Si il y a une autre technique, je suis aussi preneur...

@+

sylozof (jouet en plastok lvl 1 - )
42 ans (Sélestat)
syl82@laposte.net | 148310108

Autant l'hiver éclate que l'hétéroclyte
Eric et Ramzy





  04 07 2002 à 10:10


Je vois pas l'intérêt... t'as qu'a faire une fonction style

Function SelectData($Connexion,$champs,$table,$conditions)
{
$Req = "Select ($champs) From $table Where $conditions";
MySQL_Query($Req,$Connexion);
}

C'est vraiment basique... mais tu peux immaginer d'exploder tes champs dans un tableau etc...

@ +

benzor (admin fanatique lvl 1 - )
46 ans (Chambéry)
ben@piregwan.com
http://www.benzor.com

On a toujours tort d'essayer d'avoir raison devant des gens qui ont toutes les bonnes raisons de croire qu'ils n'ont pas tort. Coluche





  04 07 2002 à 10:53


C'est pour compter le nombre d'enregistrements d'une table. Je fais ma requete sur le champ d'id puis ensuite j'utilise mysql_numrows sur le résultat.
C'est un script qui prend en parametre le nom de la table, mais comme mon champ d'id est différent sur la table, je suis obligé de faire un SELECT * ...

j'ai essayé avec la fonction COUNT que j'avais vu en SQL mais j'ai eu des problemes, ca ne marchait pas trop bien (ou carrément pas, je ne sais plus).

ta fonction est pas mal mais du coup je suis obligé de connaitre le nom du champ d'id de chaque table, et c'est pas cool.
Si y a pas d'autre moyen je l'utiliserais certainement...

merci et @+

sylozof (jouet en plastok lvl 1 - )
42 ans (Sélestat)
syl82@laposte.net | 148310108

Autant l'hiver éclate que l'hétéroclyte
Eric et Ramzy





  04 07 2002 à 12:14


Si c'est juste pour compter g + simple :

Function CountRecord($conn,$table,$champ)
{
$Req = "Select Count($champ) As nb From $table";
$Res = MySQL_Query($Req);
if(isset($Res))
{
$Rs = MySQL_Fetch_Array($Res);
$nb_record = $Rs[nb];
return $nb_record;
}
}

tu l'utilise comme ca :

$nombreTruc = CountRecord($conn,"table_truc","id_machin");

Mais bon... t'es obligé de connaitre le nom du champ à compter

tu peux faire des fonction MoyenneRecord en changeant le COUNT par un AVG etc etc...


@ +++

benzor (admin fanatique lvl 1 - )
46 ans (Chambéry)
ben@piregwan.com
http://www.benzor.com

On a toujours tort d'essayer d'avoir raison devant des gens qui ont toutes les bonnes raisons de croire qu'ils n'ont pas tort. Coluche





  04 07 2002 à 12:23


juste une petite précision : pour ton pb de connaitre le nom de l'id de chaque table, il faut nommer tes id par concaténation de "id_"."nom_de_la_table" par exemple... c + simple
par ex : table = truc, id = id_truc

@ +++

benzor (admin fanatique lvl 1 - )
46 ans (Chambéry)
ben@piregwan.com
http://www.benzor.com

On a toujours tort d'essayer d'avoir raison devant des gens qui ont toutes les bonnes raisons de croire qu'ils n'ont pas tort. Coluche





  04 07 2002 à 14:50


héhé, pas bete ca, j'y penserais la prochaine fois

merci !

pour le comptage je vais m'arranger, ca ira. Merci pour la fonction, a l'avenir je ferais gaffe avant de me lancer dans le code.
Au fait, a quoi ca sert de passer $conn en parametre ?

sylozof (jouet en plastok lvl 1 - )
42 ans (Sélestat)
syl82@laposte.net | 148310108

Autant l'hiver éclate que l'hétéroclyte
Eric et Ramzy





  04 07 2002 à 15:19


ben.. je sais pas. c'est vrais que ca marche sans. mais la norme c'est de passer les variable de connexion en paramêtre des query.

benzor (admin fanatique lvl 1 - )
46 ans (Chambéry)
ben@piregwan.com
http://www.benzor.com

On a toujours tort d'essayer d'avoir raison devant des gens qui ont toutes les bonnes raisons de croire qu'ils n'ont pas tort. Coluche





  04 07 2002 à 15:30


ah bon ok... et ben si il y a des normes autant les respecter.
Mais alors tu n'as pas une erreur dans le premier exemple que tu m'as donné ? en parametre de mysql_query tu passes $connexion... c'est normal ?

sylozof (jouet en plastok lvl 1 - )
42 ans (Sélestat)
syl82@laposte.net | 148310108

Autant l'hiver éclate que l'hétéroclyte
Eric et Ramzy





  04 07 2002 à 16:29


resource mysql_query ( string query [, resource link_identifier])

mysql_query() envoie une requête SQL à la base de données actuellement active sur le serveur MysQL. Si link_identifier n'est pas précisé , la dernière connexion est utilisée.

Vouala.

benzor (admin fanatique lvl 1 - )
46 ans (Chambéry)
ben@piregwan.com
http://www.benzor.com

On a toujours tort d'essayer d'avoir raison devant des gens qui ont toutes les bonnes raisons de croire qu'ils n'ont pas tort. Coluche





  04 07 2002 à 16:37


ok d'accord ;o)

sylozof (jouet en plastok lvl 1 - )
42 ans (Sélestat)
syl82@laposte.net | 148310108

Autant l'hiver éclate que l'hétéroclyte
Eric et Ramzy





  04 07 2002 à 19:10


tiens un truc qui peut servir des fois, les tableaux bidimensionnels :

$tab_concordances_table_id=array (

"table1" => "id1",
"table_deuze" => "id_pouet",
"table3" => "id_33",

);

$id = $tab_concordances_table_id ["1"];

j'utilise ca pour les degres de notification en fonction du type de mail, ca donne ca pour exemple :

$degres_notification = array (

"INVITATION SUR LE FORUM" => "0" ,
"NOUVELLE REPONSE A VOTRE PARTICIPATION SUR LE FORUM" => "0" ,
"NOUVELLE REPONSE A VOTRE SUJET" => "0" ,
"PROCEDURE DE BOMBING ACTIVEE" => "0" ,
"TEST DE NOTIFICATION DYNAMIQUE" => "0" ,
"VOTRE PROPOSITION DE LIEN / YOUR LINK SUBMISSION" => "0" ,

"RESUME QUOTIDIEN" => "1" ,

"AJOUT DE SITE" => "2" ,
"NOUVEAU MEMBRE" => "2" ,
"NOUVEAU SUJET DANS LE FORUM" => "2" ,
"NOUVELLE REPONSE DANS LE FORUM" => "2" ,
"NOUVEAU REFERENT" => "2" ,
"NOUVELLE PROPOSITION DE LIEN" => "2" ,
"NOUVEAU COMMENTAIRE" => "2" ,
"NOUVEAU COUP DE COEUR" => "2" ,
"NOUVEAU SCRIPT" => "2" ,
"NEWSLETTER ENVOYEE" => "2" ,
"VALIDATION D'UN RIP" => "2" ,
"VALIDATION D'UNE ECOLE" => "2" ,

"APPEAU UTILISE" => "3" ,
"ARCHIVAGE D'UN COUP DE COEUR" => "3" ,
"CANONISATION DE MEMBRE" => "3" ,
"DEMANDE DE CANONISATION" => "3" ,
"MAINTENANCE - MODIFICATION DE STATUT D'UN MEMBRE" => "3" ,
"MODIFICATION D'UN SUJET DU FORUM" => "3" ,
"MODIFICATION D'UNE REPONSE DU FORUM" => "3" ,
"MODIFICATION D'UN SCRIPT" => "3" ,
"MODIFICATION DE COMMENTAIRE" => "3" ,
"NOUVEAU RIP" => "3" ,
"NOUVELLE ECOLE" => "3" ,
"NOUVEL ENREGISTREMENT A LA MAILING LIST" => "3" ,
"SUPPRESSION DE MEMBRE" => "3" ,
"SUPPRESSION D'UN SCRIPT" => "3" ,
"SUPPRESSION D'UNE COPIE DE SITE" => "3" ,
"SUPPRESSION D'UNE ECOLE" => "3" ,
"SUPPRESSION D'UNE REPONSE DU FORUM" => "3" ,
"SUPPRESSION D'UN ABONNE A LA MAILING-LIST" => "3" ,
"SUPPRESSION D'UN REFERENT" => "3" ,
"SUPPRESSION D'UN VISITEUR" => "3" ,
"SUPPRESSION D'UN SUJET DU FORUM" => "3" ,
"SUPPRESSION DE COMMENTAIRE" => "3" ,
"SUPPRESSION D'UNE PROPOSITION DE LIEN SANS NOTIFICATION" => "3" ,
"SUPPRESSION D'UNE PROPOSITION DE LIEN AVEC NOTIFICATION" => "3" ,
"ACCEPTATION D'UNE PROPOSITION DE LIEN AVEC NOTIFICATION" => "3" ,

"AJOUT D'UNE TRONCATURE INVALIDE" => "4" ,
"AJOUT DE TRONCATURE NON AUTORISEE" => "4" ,
"AJOUT D'UNE TRONCATURE IGNOREE INVALIDE" => "4" ,
"AJOUT DE TRONCATURE IGNOREE NON AUTORISEE" => "4" ,
"DENOTIFICATION DE MEMBRE" => "4" ,
"ERREUR A L'INSERTION D'UN RIP" => "4" ,
"MEMBRE BLOQUE" => "4" ,
"MEMBRE DEBLOQUE" => "4" ,
"MODIFICATION D'UN SCRIPT NON AUTORISEE" => "4" ,
"MODIFICATION DE COMMENTAIRE NON AUTORISEE" => "4" ,
"MODIFICATION D'UNE REPONSE DU FORUM NON AUTORISEE" => "4" ,
"MODIFICATION D'UN SUJET DU FORUM NON AUTORISEE" => "4" ,
"REMISE A ZERO DE MOT DE PASSE" => "4" ,
"SUPPRESSION DE COMMENTAIRE NON AUTORISEE" => "4" ,
"SUPPRESSION D'UN SCRIPT NON AUTORISEE" => "4" ,
"SUPPRESSION D'UNE REPONSE DU FORUM NON AUTORISEE" => "4" ,
"SUPPRESSION D'UN SUJET DU FORUM NON AUTORISEE" => "4" ,
"SUPPRESSION DE FANTOME" => "4" ,

"AJOUT D'UNE TRONCATURE" => "5" ,
"AJOUT D'UNE TRONCATURE IGNOREE" => "5" ,
"MAINTENANCE - DENOTIFICATION DES AWARES SANS EMAIL" => "5" ,
"MAINTENANCE - SUPPRESSION DES DATES DE NAISSANCE INVALIDES" => "5" ,
"MAINTENANCE - INSCRIPTION DES EMAILS MEMBRES A LA NEWSLETTER" => "5" ,
"MAINTENANCE - SUPPRESSION DES VIGNETTES MEMBRES ORPHELINES" => "5" ,
"MAINTENANCE - UPDATE DES GUEST STARS" => "5" ,
"MODIFICATION DE NOTIFICATION D'UN MEMBRE" => "5" ,
"MODIFICATION D'UN PROFIL DE MEMBRE" => "5" ,
"NOUVELLE RECHERCHE" => "5"

);

utilité très restreinte mais quand c'est pour un truc tout simple, c'est plus rapide de stocker ca dans un tableau que dans une table. aucune requete a faire. tu mets ca dans un fichier tout seul, tu fais ton include, c'est propre et rapide. ouais ca part en hors sujet je sais... ;) a+

piregwan (agent mad fanatique lvl 1 - )
47 ans (chamb�ry, 73)
krakoukas@piregwan-genesis.com | 91327470
http://www.piregwan-genesis.com

" s'il vous plait mademoiselle, j'aurais voulu prendre une leçon particulière avec anne laurencin " JCD





  04 07 2002 à 19:54


tiens oui c'est curieux ce $link facultatif ??! CONTACT YOUR SYSTEM ADMINISTRATOR FOR FURTHER INFORMATIONS !

piregwan (agent mad fanatique lvl 1 - )
47 ans (chamb�ry, 73)
krakoukas@piregwan-genesis.com | 91327470
http://www.piregwan-genesis.com

" s'il vous plait mademoiselle, j'aurais voulu prendre une leçon particulière avec anne laurencin " JCD


Pour répondre à ce sujet (et notifier automatiquement son auteur), cliquez sur le bouton REPONDRE A CE SUJET. Si vous voulez en plus avertir de votre réponse une personne qui a participé à ce sujet, cliquez sur le bouton en face de son intervention. Enfin si vous voulez inviter quelqu'un à réagir, utilisez les appeaux ci-dessous. Seuls les membres logués peuvent utiliser les appeaux et seuls les membres actifs peuvent être appeautés ^^. Bonne notification !

Vous n'êtes pas membre ou vous n'êtes pas logué(e) ou les appeaux sont désactivés dans votre profil. Vous ne pouvez pas utiliser les appeaux.