[PHP/MYSQL] Charge sur serveur ? + diverses questions...

Charge sur serveur ? + diverses questions... [PHP/MYSQL] - PHP - Programmation

Marsh Posté le 05-03-2003 à 11:02:31    

Voila, ma question est assez simple !
 
Je suis actuellement en train de développer un site assez gros (gestion d'utilisateurs, sondages, news, commentaires, forum...), et donc je me retrouve avec une tonne de requète par page (j'éxagère, mais c'est vrai qu'il commence a y en avoir !)
et tout plein de variables...
Alors je voudrais savoir, si d'une part, les variables définit a l'intérieur d'un fichier qui "includer" ou "requirer" sont visibles dans les autres fichiers include. En fait, comme la pluaprt des sites que j'ai vu jusqu'a maintenant, j'ai un fichier index.php, qui sert d'aiguilleur a tous les autres qui sont ainsi assemblé suivant les besoins. D'autre part, j'ai quelques petites questions sans trop de rapport, alors au lieu de faire plein de topic et pour ne pas trop 'polluer', les voici :
 
  A - Comment effectuer une redirection apres 5 secondes sans faire un truc du genre refresh dans le header , et sans utiliser header(). En effet, j'ai un fichier header() qui gère donc le header, et je prefererais ne pas avoir a le modifier.
 
  B -  peut on passer un objet (le résultat d'une requète, normalement unique) dans un formulaire avec un <input type=hidden> ? et si l'objet est un array d'objet ?
 
  C - peut on recuperer seulement le nom du fichier et du chemin relatif sur le serveur (aka sans le vrai chemin sur la machine, style ./index.php) ?
 
  D - je stocke actuellemen le nombre de page affiché dans une table SQL a 2 champs (intitulé, valeur), est ce bien judicieux...
 
  E - Quelqu'un pourrait il me dire un trois mots, comment effectuer un mise a jour a une heure précise (genre crontab...) ?
   
Questions bonus : elles ne sont pas du tout vitale...
  B1 - Je compte faire un forum à la main, est ce que je suis fou, et quels sont les pièges a éviter ?
 
  B2 - Dans les formulaires, POST ou GET ? pasque GET, je vois pas trop l'interet ?


Message édité par boubours le 05-03-2003 à 22:20:52

---------------
coming soon
Reply

Marsh Posté le 05-03-2003 à 11:02:31   

Reply

Marsh Posté le 05-03-2003 à 11:49:50    

A) Pas de meilleur soluce que le header. Si tu veux pas à avoir à le modifier, rend le dynamique avec une variable.
 
B1) Non tu n'es pas fou, tu es seulement courageux (enfin si tu arrives à aller jusqu'au bout).
 
B2) formulaire ==> POST.
 
 

Reply

Marsh Posté le 05-03-2003 à 12:16:57    

A- Javascript
 
B- Oui dans un formulaire POST en sérialisant ton objet, mais c'est vilain pas beau, et une vraie catastrophe point de vue sécurité: Il ne faut JAMAIS (JAMAIS) faire confiance au client.
1- Le contenu de ton objet peut fournir des informations que tu n'a pas forcément envie de montrer.
2- Rien n'empèche un petit malin de modifier le contenu de du champs Hiden.
3- Conclusion, utilise les sessions de PHP pour conserver sur le serveur les infos qui n'ont rien à faire chez le client.
 
C- De quoi tu parle ? Quel fichier ?
 
D- Plus de précisions demandées...
 
E- Pas en trois mots.
 
B1- Tout dépend des fonctions que tu veux y mettre.
 
B2- POST.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 05-03-2003 à 12:21:12    

Mara's dad a écrit :

E- Pas en trois mots.


Tu viens d'en faire 4 :pt1cable:


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 05-03-2003 à 12:21:52    

Pour les variables, à priori, c'est OUI, mais rien ne t'empèche de faire un essai, non ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 05-03-2003 à 12:22:25    

Taiche a écrit :


Tu viens d'en faire 4 :pt1cable:  


Donc j'ai raison !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 05-03-2003 à 13:32:44    

Mara's dad a écrit :

A- Javascript
 
B- Oui dans un formulaire POST en sérialisant ton objet, mais c'est vilain pas beau, et une vraie catastrophe point de vue sécurité: Il ne faut JAMAIS (JAMAIS) faire confiance au client.
1- Le contenu de ton objet peut fournir des informations que tu n'a pas forcément envie de montrer.
2- Rien n'empèche un petit malin de modifier le contenu de du champs Hiden.
3- Conclusion, utilise les sessions de PHP pour conserver sur le serveur les infos qui n'ont rien à faire chez le client.
 
C- De quoi tu parle ? Quel fichier ?
 
D- Plus de précisions demandées...
 
E- Pas en trois mots.
 
B1- Tout dépend des fonctions que tu veux y mettre.
 
B2- POST.
 


 
C'est une bien moins bonne solution que les redirections HTTP.

Reply

Marsh Posté le 05-03-2003 à 13:59:29    

Hermes le Messager a écrit :


 
C'est une bien moins bonne solution que les redirections HTTP.  


 
Je suis bien d'accord, mais je réponds à la question, et c'est la seule autre solution selon moi !
 
Maintenant si t'en as une autre, ben donne là au lieu de simplement dire que c'est naze !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 05-03-2003 à 14:03:27    

Mara's dad a écrit :


 
Je suis bien d'accord, mais je réponds à la question, et c'est la seule autre solution selon moi !
 
Maintenant si t'en as une autre, ben donne là au lieu de simplement dire que c'est naze !


 
Désolé, j'avais cru lire "une meilleure solution" que les headers. ;)
 
Effectivement, les solutions "pourrites" sont admises ;)
 

Reply

Marsh Posté le 05-03-2003 à 18:32:53    

Meric pour ces quelques réponses très interessantes...
Désolé de ne pas avoir réagit plus tot, mais j'ai fait la sieste (12h->18h)!
 
Voici quelques précisions sur mes questions :
  A - ok
  B - ok
  C - par exemple ici, je voudrais savoir comment on résupère le nom de la page seulement par exemple : forum2.php sans les ? et sans "http://forum.hardware.fr/"
 
  D - Bon c'est très carac, j'ai mes 2 champs, je cherche intitulé et j'incrémente valeur au moyen d'une fonction que j'appelle dans ma page au début (ca en s'en fout je crois)!
Je trouve très carac, car je voudrais faire de même pour afficher le nombrte de page vu apr jour (dans ce cas, ma modélisation est deja dans le colletard...)
En fait, plus clairement, faut il plutot, que je loggue chaque affichage de ma page dans un table avec la date, ou plutot une mise a jour de ma precedente table SQL, qui tout les jours à minuit, stocke la valeur courante, dans une nouveau champs d'intitulé par exemple, le jour du mois ?
En fait, mon raisonnement est surtout en terme de performances...


---------------
coming soon
Reply

Marsh Posté le 05-03-2003 à 18:32:53   

Reply

Marsh Posté le 05-03-2003 à 18:37:41    

 D - suite : En fait ce que je voudrais surtout savoir, c'est si il est preferable de stocker ce genre de valeurs, ou de les rechercher dans les tables SL, par requette, a chaque fois que l'on veut les afficher.
Ex + concret : J'ai des users qui s'inscrivent sur le site, avec une date, je peux donc tous les chopper en les comptant (count(*)) et si je les groupe par leurs dates d'arrivées, je peux facilement deviner combien de users se sont inscrit aujourd'hui. La question, c'est est ce que mysql est rapide pour faire ce genre de requette, et surtout, et ce que c'est la meilleurs des facons de faire , car a chaque fois que je voudrais afficher ce nombre, faudra, que je refasse ma requette ?
 
  E - sinon je prends aussi des liens, car j'ai pas vu encore de trucs interessants la dessus ...
 
  B1 - ok
  B2 - ok


---------------
coming soon
Reply

Marsh Posté le 05-03-2003 à 20:59:09    

C- $script_name = basename( $HTTP_SERVER_VARS["PHP_SELF"] );
 
D- Table à 3 champs ( MySql 3.x supposé )
 

Code :
  1. CREATE TABLE tableVisites (
  2.   IntitulePage varchar(30) NOT NULL default '',
  3.   DateVisite date NOT NULL default '0000-00-00',
  4.   NbVisite int(11) NOT NULL default '0',
  5.   PRIMARY KEY  (IntitulePage,DateVisite)
  6. ) TYPE=MyISAM;


 
Mise à jour du compteur :
 

Code :
  1. $script_name = basename( $HTTP_SERVER_VARS["PHP_SELF"] );
  2. if( ! mysql_query( "INSERT tableVisites ( IntitulePage, DateVisite, NbVisite ) VALUES ( '$script_name', now(), 1 )" ) )
  3. {
  4. mysql_query( "UPDATE tableVisites SET NbVisite = NbVisite + 1 WHERE IntitulePage='$script_name' AND DateVisite=now()" );
  5. }


 
Pas de problème pour la requête de comptage des users si y' un index sur le champs date.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 05-03-2003 à 21:09:48    

E- Le problème c'est de mettre un truc en crontab, ou de faire le script de MAJ.
 
Pour le script de MAJ, le plus simple c'est :
 
1- Vérifier l'éxistance d'un fichier précis
ex: /home/boubours/maj_site.tar.gz
 
2- S'il éxiste le décompresser au bon endroit
ex: cd /home/www
tar -zxvf /home/boubours/maj_site.tar.gz
cd ..
chown -R UserApache:GroupeApache www
 
3- Si OK supprimer le fichier ou le déplacer et le renomer avec la date du jour pour archivage par exemple.
 
Pour crontab y'a plusieurs solutions qui dépendent de ta config.
Par exemple:
Mettre le script en question (ou un lien) dans /etc/cron.d ou /etc/cron.daily  
 
Mais je n'en sais pas assez sur cron ou anacron pour t'en dire plus.
 
Demande sur OSA (après recherche bien sûr ;) )


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 05-03-2003 à 22:33:45    

un grand merci pour vos réponses  
 
cependant je nai pas du m'exprimer assez clairement pour les question D et E :
 
  D - en fait c surtout la question de comment le réaliser le plus optimisé possible ?
  E - La question c'est surtout, comment on fait pour faire des mises a jour  a une heure precise en php! Genre un fichier qui s'éxécute à minuit tous les jours et qui fait des mises a jour sur ma base de donnée !

Reply

Marsh Posté le 05-03-2003 à 22:42:40    

boubours a écrit :


  E - La question c'est surtout, comment on fait pour faire des mises a jour  a une heure precise en php! Genre un fichier qui s'éxécute à minuit tous les jours et qui fait des mises a jour sur ma base de donnée !


 
bah, c'est ce que te disait Mara's dad. Si t'es sous linux (et que tu as la mains sur le serveur ;) )tu utilises un cron (cf OSA), si t'es sous Win tu peux utiliser l'équivalent (planificateur des taches). Si t'as pas la mains sur le serveur, soit tu contactes ton hébergeur pour qu'il te mette ça en place (ça c'est si tu as un hébergement pro, ça m'étonnerait que free ou multimania fasse ce genre de truc).
Bon si t'es dans aucun de ces cas, il te reste http://www.webcron.org/

Reply

Marsh Posté le 06-03-2003 à 10:15:41    

E- Normalement si PHP est compilé en CGI, il est possible de le lancer en ligne de commande :
php /chemin/mon_script.php
 
Le tout dans cron, et çà roule !
 
D- Ben comme je l'ai fait c'est déjà pas mal, mais je viens de me rendre compte qu'on peut inverser le INSERT et le UPDATE.
1- Faire l'UPDATE
2- Si l'UPDATE a foiré, faire l'INSERT.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed