rafraichissement automatique affichage

rafraichissement automatique affichage - PHP - Programmation

Marsh Posté le 19-07-2007 à 13:23:37    

Bonjour,
 
Je dois actuellement faire un script gérant l'affichage du planning des différentes classes d'une école sur les téléviseurs situés dans les locaux. Je me suis orienté vers le php dans un premier temps mais je gélère un peu !!
Tout d'abord les données sont dans une base de donnée oracle, la communication et l'interrogation avec elle se passe bien mais c'est au niveau de l'affichage que j'ai du mal, il faudrais en gros afficher les résultats 6 lignes par 6 lignes avec un rafraichissement automatique de l'affichage au bout de disons 10 secondes. A la base j'ai fais ma requete avec un rownum (équivalent de limit) selectionnant les enregistrements 6 par 6 mais bon ca fais quand meme faire une requete toutes les 10 secondes et cela jour et nuit, c'est quand meme pas génial !
 
Moi en général j'affiche le résultat d'une requete dès quelle sors grâce à un while mais bon ca me fais tout afficher et si je veux autre chose je refais une requete en demandant d'autres données ce qui est lourd.
 
Donc j'aimerai savoir si il y as une possibilité pour garder le résultat de la requete dans un tableau par exemple afin d'afficher ce qui me conviens petit a petit et de ne réinterroger la base de donnée mettons toutes les 15 min ce qui serait plus raisonnable !
 
Donc je recherche des pistes surtout que je finis mon stage demain donc il faut que je m'en sorte ce coup ci !
 
Merci d'avance

Reply

Marsh Posté le 19-07-2007 à 13:23:37   

Reply

Marsh Posté le 19-07-2007 à 13:27:10    

meijin a écrit :

ca fais quand meme faire une requete toutes les 10 secondes et cela jour et nuit, c'est quand meme pas génial !


C'est rien du tout ouai...


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 19-07-2007 à 13:40:53    

dwogsi a écrit :

C'est rien du tout ouai...


 
Attention je dis pas que ca fais beaucoup, seulement que j'aimerai faire en sorte qu'il y en ais moins... déjà ca choque mon maitre de stage et ensuite si ya moyen de trouver une astuce pour se passer de ca, ca les arrangeraient eux parce qu'ils trouvent que c'est trop et moi parce que bon quand je fais un travail j'aime bien qu'il ne reste pas au fond d'un placard à moisir parce qu'un chef a décider que ca lui plaisais pas  :sarcastic:

Reply

Marsh Posté le 19-07-2007 à 13:48:47    

J'ai absolument rien compris à ce que tu veux faire...


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 19-07-2007 à 14:03:40    

Mets en place un système de cache:  
via php génère une page html contenant tes résultats, Affiche celle-ci sur tes téléviseurs, a chaque modif de la base regénère les pages html dont une partie des informations a été modifié.

Reply

Marsh Posté le 19-07-2007 à 14:17:19    

En php c est possible  
 
Ta requete -> data dans un array --> fonction array_slice() sur ton tableau pour les avoir 6 par 6  
 
Encore mieux en foutant des trigger sur tes tables tu sais si tes data ont été modifiées donc en gros tu reinterroge que si y a eu des modifs, sinon tuy reste sur le meme tablo et la pas requetage inutile

Reply

Marsh Posté le 19-07-2007 à 14:24:42    

cgo2 a écrit :

J'ai absolument rien compris à ce que tu veux faire...


 
 
ouai je me disais bien aussi que j'étais pas clair.
En gros je suis dans une école et l'école affiche le planning des stagiaires chaque jour sur les téléviseurs qui trainent un peu partout (cours, salles,...)
Actuellement c'est fais en Excel 5 et ils veulent moderniser donc je le fais en php!
 
Ce qu'il faut c'est que php tape dans une base de données oracle pour recup toutes les données, donc ca pas de soucis et ensuite affiche ces données.
 
Mais je peux pas toutes les afficher en meme temps car ya pas d'écran de 15 km de hauteur :pt1cable:  
 
Comme j'ai fais le truc là tout de suite maintenant :pt1cable: , je récup 6 cours à chaque fois, les affiche, et au bout de 10 sec ya un lien automatique qui renvoie vers la page suivant (exactement comme pour une page de commentaires divisées en plusieurs pages pour ne pas faire 15 km de hauteur sauf que la ca se fais tout seul pas besoin de cliquer) pour afficher 6 résultats suivants et ainsi de suite.
 
Mais mon patron voudrais que je récup tout d'un coup (et non pas 6 résultats a chaque fois) , que je stock ca 1/4 d'heure dans un tableau par exemple pour ne faire une requete que toutes les 15 minutes du coup...
 
Mais bon les tableaux autant en C j'ai pas de soucis avec, autant en php je suis pas sur de mon coup !! et faire une requete seulement tous les 1/4 d'heure et pas a chaque rafraichissement de la page sincérement je vois pas...
 
Je suis pas encore très clair j'ai l'impression, faut dire que c'est pas simple à expliquer et pas clair dans ma tête :o

Reply

Marsh Posté le 19-07-2007 à 14:31:16    

anapajari a écrit :

Mets en place un système de cache:  
via php génère une page html contenant tes résultats, Affiche celle-ci sur tes téléviseurs, a chaque modif de la base regénère les pages html dont une partie des informations a été modifié.


 
Ah oui l'idée est à creuser en effet je n'y avais pas penser! mais comment je peux détecter que la base de donnée à été modifiée si je fais pas des requetes souvent?  
 

Citation :

En php c est possible  
 
Ta requete -> data dans un array --> fonction array_slice() sur ton tableau pour les avoir 6 par 6  
 Encore mieux en foutant des trigger sur tes tables tu sais si tes data ont été modifiées donc en gros tu reinterroge que si y a eu des modifs, sinon tuy reste sur le meme tablo et la pas requetage inutile


 
Tu me parle un peu en chinois là, je dois avouer que les fonction avancées de php j'ai jamais vraiment creuser mais je vais prospecter un peu sur le net sur tout ca pour apprendre
 
Merci à tous les deux
 
Je sens que ca va etre hard a faire d'ici demain ^^

Reply

Marsh Posté le 19-07-2007 à 14:36:41    

J'ai compris !
 
Je suis pour une solution similaire à celle d'anapajari : un système de cache tout bete (mais pas en html).
 
C'est très simple, ta page devient :
 
si cache existe & n'est pas expiré (modification inférieure à 15 minutes par exemple)
  je lis les données depuis le cache
sinon
  je lis les données depuis la base
  j'écris le cache
fin si


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 19-07-2007 à 14:42:34    

cgo2 a écrit :

J'ai compris !
 
Je suis pour une solution similaire à celle d'anapajari : un système de cache tout bete (mais pas en html).
 
C'est très simple, ta page devient :
 
si cache existe & n'est pas expiré (modification inférieure à 15 minutes par exemple)
  je lis les données depuis le cache
sinon
  je lis les données depuis la base
  j'écris le cache
fin si


 
ah ouais ok je comprend mieux là, c'est en effet une solution qui me semble interessante... je vais aller de ce pas regarder comment mettre ce systeme de cache vu que je n'ai jamais toucher a cela... et je n'ai pas penser au fait qu'on pouvais donner une période de validité en plus
 
Merci beaucoup pour cette idée je pense que ca va etre tres bon ca :love:

Reply

Marsh Posté le 19-07-2007 à 14:42:34   

Reply

Marsh Posté le 19-07-2007 à 15:06:34    

euh ... [:w3c compliant]

 

Je continue à dire qu'il vaut mieux faire une page html.
En toute théorie dans ce genre d'appli, tu une partie "admin" qui te permet de modifier les informations.
Donc ce que je te disais c'est: "Chaque fois que l'administrateur modifie les informations tu regénères les pages HTML concernées".

 

Maintenant vu que c'est un emploi du temps et que d'après ce que je comprends tu n'affiches qu'une vue partielle de celui-ci ( vue partielle "mouvante" d'heure en heure), je générerais les différents pages de toutes les heures en une et une seule fois.
Ensuite sur tes télés tu affiches un page php qui en fonction de l'heure va lire la bonne page générée.

 

Ah et tu vas me dire:"Ouais mais si aucune information n'est modifié, mes pages sont pas à jour". Effectivement, c'est pour ça qu'il te faudra rajouter un script dans la cron, qui tourne quotidiennement pour mettre à jour les différents pages.

Message cité 2 fois
Message édité par anapajari le 19-07-2007 à 15:07:36
Reply

Marsh Posté le 19-07-2007 à 15:23:05    

anapajari a écrit :

Je continue à dire qu'il vaut mieux faire une page html.
En toute théorie dans ce genre d'appli, tu une partie "admin" qui te permet de modifier les informations.
Donc ce que je te disais c'est: "Chaque fois que l'administrateur modifie les informations tu regénères les pages HTML concernées".


 
La partie admin par contre n'est pas en html mais c'est une interface d'un logiciel. Et elle n'est pas du tout sur le serveur ou la page que je fais est (la base oracle n'est pas non plus sur le meme serveur dailleurs). Je sais pas si ca pose pb suivant ce que tu dis
 

anapajari a écrit :

Maintenant vu que c'est un emploi du temps et que d'après ce que je comprends tu n'affiches qu'une vue partielle de celui-ci ( vue partielle "mouvante" d'heure en heure), je générerais les différents pages de toutes les heures en une et une seule fois.
Ensuite sur tes télés tu affiches un page php qui en fonction de l'heure va lire la bonne page générée.


 
Il faut savoir une chose, les cours sont par demi-journées (pas très important je sais mais petite précision) ensuite, toi tel que je comprend ce que tu dis c'est en gros le matin on fais la requete pour toute la journée et ensuite on joue avec le résultat... ce qui n'est pas possible car des cours peuvent être ajoutés à tout moment de la journée pour le jour même voire même des cours peuvent être ajoutés pendant que le cours est en train d'être fait (je suis dans un établissement de formation pas un lycée) donc en gros... en admettant que j'ai tout compris correctement, ca poserais un peu pb !
 
Il faut vraiment qu'une requete soit lancée tous les 1/4 d'heure sinon plus rien n'est à jour
 
A moins que je n'ai pas compris ce que tu as dis, ce qui n'est pas impossible vu mon état aujourdui :sleep:

Reply

Marsh Posté le 19-07-2007 à 15:28:48    

anapajari a écrit :

Je continue à dire qu'il vaut mieux faire une page html.


 
Bof, je suis pas fan de la pré-génération du html par le back, je trouve ça beaucoup plus contraignant : il faut modifier l'interface d'admin en plus, ajouter une cron pour décacher, faire pleins de petits fichiers, etc.
 
Cacher les données brutes, c'est ptet un peu moins efficace, mais vu qu'il fini son stage demain, amha c'est ce qu'il y a de + rapide à faire !


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 19-07-2007 à 15:30:38    

meijin a écrit :

A moins que je n'ai pas compris ce que tu as dis, ce qui n'est pas impossible vu mon état aujourdui :sleep:


 
C'est pour ça qu'il te dit d'utiliser une cron pour régénérer les pages tous les 1/4 d'heure.


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 19-07-2007 à 15:34:09    

Moi aussi je campe sur ma position :d Un trigger sur une table est encore plus simple a mettre en place pour detecter une éventuelle modification des données...

Reply

Marsh Posté le 19-07-2007 à 15:39:50    

Oreste a écrit :

Moi aussi je campe sur ma position :d Un trigger sur une table est encore plus simple a mettre en place pour detecter une éventuelle modification des données...


 
Et comment ton trigger préviens PHP de regéner le cache ? Ou bien tu fais tout en pl/sql ?


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 19-07-2007 à 15:44:17    

cgo2 a écrit :

Bof, je suis pas fan de la pré-génération du html par le back, je trouve ça beaucoup plus contraignant : il faut modifier l'interface d'admin en plus, ajouter une cron pour décacher, faire pleins de petits fichiers, etc.


ça dépend de beaucoup de critères, entre autres:
- fréquence et volumétries des informations "changeantes"
- fréquence et volumétrie des accès

cgo2 a écrit :

Cacher les données brutes, c'est ptet un peu moins efficace,


A ce moment autant se servir de SGBD et faire une vue matérialisé et les requêtes qui tappent dessus. C'est fait pour [:spamafote]

cgo2 a écrit :

mais vu qu'il fini son stage demain, amha c'est ce qu'il y a de + rapide à faire !


euh  [:roane] c'est pas spécialement long d'utiliser les fonctions ob_* pour rediriger un flux dans un fichier plutôt qu'à l'écran.
 
 

Reply

Marsh Posté le 19-07-2007 à 15:51:06    

cgo2 a écrit :


Cacher les données brutes, c'est ptet un peu moins efficace, mais vu qu'il fini son stage demain, amha c'est ce qu'il y a de + rapide à faire !


 
Si je dois bosser chez moi après mon stage ca me dérange pas non plus mais faut pas une solution qui prenne trois semaines quoi c'est tout ! :)  
 
 
En toutcas dans les 2 solution données je ne sait pas faire. Donc je ne sais pas ce qui est le plus efficace.
 
Par contre la solution de Oreste, je sais faire des triggers, mais je vois vraiment pas comment informer le php des changements après !! Si tu as une explication...

Reply

Marsh Posté le 19-07-2007 à 17:25:31    

anapajari a écrit :

ça dépend de beaucoup de critères, entre autres:
- fréquence et volumétries des informations "changeantes"
- fréquence et volumétrie des accès


 
oui, ça dépend.
 

anapajari a écrit :


A ce moment autant se servir de SGBD et faire une vue matérialisé et les requêtes qui tappent dessus. C'est fait pour [:spamafote]


 
Ah c'est possible (je travaille jamais avec Oracle, je pense pas à ce genre de trucs).
 
En fait j'ai simplement répondu à ça sans vraiment reflechir plus loin :
 

Citation :

Mais mon patron voudrais que je récup tout d'un coup (et non pas 6 résultats a chaque fois) , que je stock ca 1/4 d'heure dans un tableau par exemple pour ne faire une requete que toutes les 15 minutes du coup...


 
Mais après reflexion c'est sûr que c'est pas forcement la meilleure solution (le cache html c'est bien aussi).
 

anapajari a écrit :

euh  [:roane] c'est pas spécialement long d'utiliser les fonctions ob_* pour rediriger un flux dans un fichier plutôt qu'à l'écran.


 
Ce qui est "long" (tout est relatif evidemment) c'est d'adapter l'interface d'admin, créer la cron, etc. D'autant que l'interface d'admin en question à l'air un client lourd si j'ai bien compris, donc adaptation pas simple, etc. J'ai rien contre l'output buffering, mais moi je préfère l'utiliser en front pour générer le cache à la volée.


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 19-07-2007 à 19:05:06    

Pour mon histoire de trigger il doit y a avoir moyen de flagger ca à l'exterieur...

 

Une solution rapidos dans le corps des trigger serait de creer un fichier "junk.txt". Ensuite dans ton script php tu test si le fichier existe, si ok je raffraichis mes données sinon je continues avec les memes... et des que tu met a jour les données via SQL et ben tu vire le fichier.

 

Enfin la c est la solution bourrin mais doit y avoir des trucs plus propres :) en tout cas avec les triggers c est optimal pour limiter les requetes sur ton serveur et avoir les données synchro.

Message cité 1 fois
Message édité par Oreste le 19-07-2007 à 19:06:24
Reply

Marsh Posté le 20-07-2007 à 09:08:56    

Oreste a écrit :

Pour mon histoire de trigger il doit y a avoir moyen de flagger ca à l'exterieur...
Une solution rapidos dans le corps des trigger serait de creer un fichier "junk.txt". Ensuite dans ton script php tu test si le fichier existe, si ok je raffraichis mes données sinon je continues avec les memes... et des que tu met a jour les données via SQL et ben tu vire le fichier.
Enfin la c est la solution bourrin mais doit y avoir des trucs plus propres :) en tout cas avec les triggers c est optimal pour limiter les requetes sur ton serveur et avoir les données synchro.


 [:kains] au secours ...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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