["PHP si on veut"] - nouveaux post d'un forum

- nouveaux post d'un forum ["PHP si on veut"] - PHP - Programmation

Marsh Posté le 22-05-2002 à 17:25:02    

Salut tlm je suis en train de realiser un petit forum simple, je voudrais savoir quelle methode utiliser pour que quand qqun se logue il voit les nouveaux message qui ont été posté depuis sa derniere connection ? Et ce tout au long de sa session ??? chui un ptit peu bloqué alors ceux ki ont fé un forum pouriez vous me conseiller? J'ai pensé a faire une variable de session qui  enregistre la date  de ma derniere connection, bonne idee??? ou pas.... merci les gars
 
a+
 
edit: gouré dans le titre  :lol:

 

[jfdsdjhfuetppo]--Message édité par SquiiiD le 22-05-2002 à 17:25:46--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 22-05-2002 à 17:25:02   

Reply

Marsh Posté le 22-05-2002 à 18:28:08    

[:yoyoz]

Reply

Marsh Posté le 22-05-2002 à 18:54:47    

un cookie actualisé en fin de page à l'heure du chargement de la page.
lors de l'affichage du forum tu testes si l'heure du post est supérieure à l'heure du cookie.
 
je l'ai pas encore fais donc je ne saurais pas te dire si ça fct.
 
mais j'ai l'impression que ça va foirer s'il y a plusieurs sujet nouveaux et que la personne va en voir un, les autres seront marqué comme "vu" lors du retour de l'utilisateur à la liste des sujets, laors qu'elle ne les a pas visionnés.
-->problème :(


---------------
...oups kernel error...
Reply

Marsh Posté le 22-05-2002 à 19:10:03    

oui, comment cela peut-il bien marché ?
 
déjà, ça me parait bp trop lourd de créer une table ki garde en mémoire si t'as lu un poste ou pas -> il y aurait nbUtilisateurs*nbPostes enregistrement => bp bp trop lourd...
 
 
 
autre solution :
tu gardes dans la bd dans une table disons tb_consult(idUtil, idTopic, dateDerConsult) la date de dernière consultation d'un topic pour chaque util :
 
kan l'utilisateur lit un sujet, la date et l'heure de la consultation sont enregistrés dans cette table.  
kan un autre utilisateur poste dans un sujet, tous les enregistrement correspondant à ce sujet seront supprimés.
 
enfin, lorsqu'un utilisateur arrives sur ta page d'index du forum, tu récupères toutes les données de la table tb_consult correspondant à cet utilisateur et tu coches comme lu les topics dont l'id correspond à un enregistrement de ta table ...
 
 
 
voilà une idée... j'ai jamais essayé... faut voir, c'est p'têtre un peu lourd en transaction...  
bon, en le relisant, je m'apperçois ke c'est pas très klerr ;)
dis moi si tu vois pa ce ke je veux dire, j'essayerais de mieux m'expliké...

 

[jfdsdjhfuetppo]--Message édité par Moustaaki le 22-05-2002 à 19:14:28--[/jfdsdjhfuetppo]


---------------
Boolay for ever...
Reply

Marsh Posté le 22-05-2002 à 19:26:32    

Merci de te donnerdu mal moustaaki :)
 
je vois pas trop en fait non. Ou alors si j'ai bien compris cavaetre lourd en effet car si y a 1000 gars sur le forum cafait 1000 enregistrement * le nombre total de post?

 

[jfdsdjhfuetppo]--Message édité par SquiiiD le 22-05-2002 à 19:29:17--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 22-05-2002 à 22:18:58    

SquiiiD a écrit a écrit :

Merci de te donnerdu mal moustaaki :)
 
je vois pas trop en fait non. Ou alors si j'ai bien compris cavaetre lourd en effet car si y a 1000 gars sur le forum cafait 1000 enregistrement * le nombre total de post?  




 
 :cry:  c horiblement lourd :(
je vais voir ce qu'ils utilisent sur les autres forums ;)


---------------
...oups kernel error...
Reply

Marsh Posté le 22-05-2002 à 22:21:21    

tu peux stocké dans le cookie la dernière date de visu pour chaque topic


---------------
Protèges carnets personnalisés & accessoires pour bébé
Reply

Marsh Posté le 22-05-2002 à 22:26:24    

j'y pensais mais il existe une limite de taille des cookies non ?
(visiblement c'est ce que tu utilises puisque tu en parles :D)
 
 
[HS]
Au fait Joce, j'ai vu sur atomic forum qu'ils parsent les smilies et les bbcodes avec du javascript.  je me suis dis que ça pourrait t'intéresser pour encore speeder tes pages ;)
[HS]


---------------
...oups kernel error...
Reply

Marsh Posté le 22-05-2002 à 22:28:29    

ethernal a écrit a écrit :

j'y pensais mais il existe une limite de taille des cookies non ?
(visiblement c'est ce que tu utilises puisque tu en parles :D)
 
 
[HS]
Au fait Joce, j'ai vu sur atomic forum qu'ils parsent les smilies et les bbcodes avec du javascript.  je me suis dis que ça pourrait t'intéresser pour encore speeder tes pages ;)
[HS]  



j'aime pas le javascript, ca s'avère lent finalement, regarde la fonction cache HTML, au final c'est plus lent avec que sans :D


---------------
Protèges carnets personnalisés & accessoires pour bébé
Reply

Marsh Posté le 22-05-2002 à 22:37:41    

joce a écrit a écrit :

j'aime pas le javascript, ca s'avère lent finalement, regarde la fonction cache HTML, au final c'est plus lent avec que sans :D  




 
tu as raison, mais c étonnant  :??:  
Pour le php composer une page html ou javascript ça ne change rien.  
Si tu utilises des templates, tu y gagnes puisque plus ta page est petite en taille moins il a à parcourir de code pour remplacer les tags par les valeurs.
 
tu as une explication ?
la partie code javascript est-elle "moins bien" codée ??

 

[jfdsdjhfuetppo]--Message édité par ethernal le 22-05-2002 à 22:38:17--[/jfdsdjhfuetppo]


---------------
...oups kernel error...
Reply

Marsh Posté le 22-05-2002 à 22:37:41   

Reply

Marsh Posté le 22-05-2002 à 22:49:46    

Joce tu veux dire que toi tu stoque les valeurs des dernieres visite pour chaque topic ???? Ca va qu'en tu en a 100 mais quant tu en as 100000000 !

Reply

Marsh Posté le 22-05-2002 à 23:28:48    

Salut, les gars en fait ma premiere idee marche nickel,lorsque le membre se logue, une variable de session est enregistree avec la derniere date de connection du membre, ensuite cette date de connection est mise a jour dans la DB puis tout les post qui ont été posté apres la date qui se trouve dans lavariable de session apparaisse en surbrillance.
A mon avis c pas lourd du tout et ca marche, sauf que evidement si le gars ne lis pas les nouveaux messages et se relogues il sont marqué comme ancien; mais bon,c deja ca, et je crois que si on regarde le forum Vbulletin ca fé pareil !
 
A+ les gars et merci

Reply

Marsh Posté le 22-05-2002 à 23:45:22    

ethernal a écrit a écrit :

 
 
tu as raison, mais c étonnant  :??:  
Pour le php composer une page html ou javascript ça ne change rien.  
Si tu utilises des templates, tu y gagnes puisque plus ta page est petite en taille moins il a à parcourir de code pour remplacer les tags par les valeurs.
 
tu as une explication ?
la partie code javascript est-elle "moins bien" codée ??  
 
 




nop elle est codée pareil, mais c'est bizarrement carrement plus lent


---------------
Protèges carnets personnalisés & accessoires pour bébé
Reply

Marsh Posté le 23-05-2002 à 00:03:37    

la majorité des gens utilisent avec ou sans js ?
si la majotrité ne l'utilise pas, il y a des chance pour que les pages soient très peu optimisées par phpAccelerator...
 
sinon les transformations (addslashes & co) sont stockées dans la bd (je suppose que non d'après ta réponse de la dernière fois) dans ce cas ça peut jouer, mais pas des masses.
 
sinon je ne comprends pas.  :??:  :??:  
En général, (dans tout les tests que j'ai fait) on remarque un temps presque divisé par 2 qd on utilise du js pour afficher une page (ex:liste de messages)


---------------
...oups kernel error...
Reply

Marsh Posté le 23-05-2002 à 03:10:48    

ethernal a écrit a écrit :

la majorité des gens utilisent avec ou sans js ?
si la majotrité ne l'utilise pas, il y a des chance pour que les pages soient très peu optimisées par phpAccelerator...
 
sinon les transformations (addslashes & co) sont stockées dans la bd (je suppose que non d'après ta réponse de la dernière fois) dans ce cas ça peut jouer, mais pas des masses.
 
sinon je ne comprends pas.  :??:  :??:  
En général, (dans tout les tests que j'ai fait) on remarque un temps presque divisé par 2 qd on utilise du js pour afficher une page (ex:liste de messages)  




ba pas sur ce forum en tout cas :D


---------------
Protèges carnets personnalisés & accessoires pour bébé
Reply

Marsh Posté le 23-05-2002 à 12:58:17    

hfr forum ne le fait pas avec des cookie.
 
j'ai l'impression que c'est un peu infaisable avec un cookie qui contient id_forum/id_topic/date_lecture pour des questions de taille (gros forum).
 
 
question de taille :

Citation :


Be careful not to exceed the 4KB-per-cookie size limit


 
si je calcule bien ça fait 4096 caractères par cookie (?)
 
un cookie c'est setcookie('name','val',...)
ou bien c'est le fichier user@domaine.net qui se trouve sur le pc du visiteur ?


---------------
...oups kernel error...
Reply

Marsh Posté le 23-05-2002 à 14:05:24    

ethernal a écrit a écrit :

la majorité des gens utilisent avec ou sans js ?
si la majotrité ne l'utilise pas, il y a des chance pour que les pages soient très peu optimisées par phpAccelerator...
 
sinon les transformations (addslashes & co) sont stockées dans la bd (je suppose que non d'après ta réponse de la dernière fois) dans ce cas ça peut jouer, mais pas des masses.
 
sinon je ne comprends pas.  :??:  :??:  
En général, (dans tout les tests que j'ai fait) on remarque un temps presque divisé par 2 qd on utilise du js pour afficher une page (ex:liste de messages)  




compression zlib, mais mais le JS ...
 
 
chez moi bizarrement (la fonction cache fait exactement la meme chose que le php) je gagne 10ms que quand elle est desactivée ..
(je parle de mon forum)
 
pour en revenir a la question :
 
tu peux tres bien faire une table, meme si tu as bcp d'enregistrement, suffit de mettre un index sur le numéro du topic et sur l'id de l'utilisateur, et ca mettra rien du tout en temps !

 

[jfdsdjhfuetppo]--Message édité par ninja sky le 23-05-2002 à 14:05:50--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 23-05-2002 à 15:21:16    

je suis en tests avec les cookies, mais je me demande combien de temps ça va tenir


---------------
...oups kernel error...
Reply

Marsh Posté le 23-05-2002 à 17:06:12    

vous pourriez tester svp ?
regarder si il y a rien qui déconne ?
thx
ethernal
 
(http://www.ethernal.be/work/)
 
PS :  
- les urls foirent parfois
- il n'y a pas de bbcode
- la liste des smileys n'est pas complète
- il n'y a pas d'anti flood (déconnez pas svp ;) )


---------------
...oups kernel error...
Reply

Marsh Posté le 23-05-2002 à 19:28:09    

j'ai essayé avec les cookies. Ca marche pas trop mal mais c'est très lourd à gérer.
Ptain quand je vois vos forums et le mien, ca me fait peur.  
Le mien par rapport aux votres, c comme le Java par rapport au C++. J'ai crée un escargot. En mettant des index, est ce que ca peut accélérer? mais bon, la structure de la base est super génial car j'ai des jointures tout le temps.

Reply

Marsh Posté le 23-05-2002 à 19:47:46    

les index oui ça accelere pas mal, mais sinon c'est le javascript qui speed le tout.
Mais ne t'inquiète pas, plus tu ajoutes de fonctionalité, plus c lent, c normal ;)


---------------
...oups kernel error...
Reply

Marsh Posté le 23-05-2002 à 20:05:05    

code avec les cookies:
 
Marquer un sujet comme lu : au chargement d'une page liste de messages/ajout d'un message (et donc ajout d'un topic sous entendu)

Code :
  1. $status= unserialize($HTTP_COOKIE_VARS["status"]);
  2. $status[forum_id][topic_id]= time();
  3. setcookie("status", serialize($status), time()+3600*24*365,"/" );


 
Afficher les sujets (détection si le sujet est lu ou pas)

Code :
  1. $status= unserialize($HTTP_COOKIE_VARS["status"]);
  2. if ( isSet($status[forum_id][topic_id]) ){
  3. //le sujet a été lu
  4.   if ($status[forum_id][topic_id]>= $topic["Date"]){
  5.    //le sujet a été lu et il n'y a pas de nouveau message
  6.   }
  7.   else{
  8.    //le sujet a été lu et il y a un nouveau message
  9.   }
  10. }
  11. else{
  12.   //le sujet n'a jamais été lu
  13. }


à vous de le faire pour la liste des forums et l'adapter à votre script.
 
c'est pas si lourd que cela, mais je me demande qd la limite de taille sera atteinte ?

 

[jfdsdjhfuetppo]--Message édité par ethernal le 23-05-2002 à 20:14:09--[/jfdsdjhfuetppo]


---------------
...oups kernel error...
Reply

Marsh Posté le 23-05-2002 à 20:42:42    

ethernal a écrit a écrit :

les index oui ça accelere pas mal, mais sinon c'est le javascript qui speed le tout.
Mais ne t'inquiète pas, plus tu ajoutes de fonctionalité, plus c lent, c normal ;)




 
[:wam] moi a plus j'en rajoute et a plus je modifie mon code, a plus c rapide  :p

Reply

Marsh Posté le 23-05-2002 à 21:03:54    

ethernal a écrit a écrit :

les index oui ça accelere pas mal, mais sinon c'est le javascript qui speed le tout.
Mais ne t'inquiète pas, plus tu ajoutes de fonctionalité, plus c lent, c normal ;)  




 
Oui c'est sur mais bon, je vais refaire la structure et je pense que ca ira plus vite pour la consultation.  
J'utilise le javascript que si je peux pas faire autrement. C'est normal que tout soit plus speed avec le js: au lieu de tout concentrer sur le serveur qui renvoie une page tout prete pour le client, tu fais bosser les deux cotés.
Pour ceux qui veulent voir mon escargot : http://lan-stadium.expert-gamers.com/forum/
 
ethernal, tu viens de m'apprendre qqch. je savais meme pas qu'on pouvait faire de la serialisation avec PHP. Moi qui me faisait chier, pour faire $cookie->tableau et tableau->$cookie...je sens que je vais modifier mon script pour intégrer ca.

 

[jfdsdjhfuetppo]--Message édité par Scoubidoo le 23-05-2002 à 21:23:54--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 23-05-2002 à 21:11:16    

Scoubidoo a écrit a écrit :

 
Pour ceux qui veulent voir mon escargot : http://lan-stadium.expert-gamers.com/forum/
 
Moi qui me faisait chier, pour faire $cookie->tableau et tableau->$cookie...je sent que je modifier mon script pour intégrer ca.  




 
j'ai déjà été voir et je ne trouve pas ça si lent ... :)
le serialize le fait pour toi, alors pourquoi se casser la tête ?? ;)


---------------
...oups kernel error...
Reply

Marsh Posté le 23-05-2002 à 21:28:06    

ethernal a écrit a écrit :

 
 
j'ai déjà été voir et je ne trouve pas ça si lent ... :)
le serialize le fait pour toi, alors pourquoi se casser la tête ?? ;)  




 
Il est quand même plus lent que d'autres (page d'accueil généré en + 1 sec, c un peu trop).
Pour le serialize, ca m'apprendra à vouloir faire des trucs compliqués alors qu'une fonction existe.
Sur ton forum, tu fais comment pour compter le nombre de requete SQL et afficher la taille du fichier de sortie. J'aimerais bien savoir. Merci

Reply

Marsh Posté le 24-05-2002 à 01:13:00    

Pour le nombre de requête :
j'ai une classe SQL que j'instancie une fois au début du chargement de chaque page.  après l'objet est passé en global.
A chaque $objSQl->query("maquery); j'incrémente le compteur de requête.
Tu peux le faire en ayant une variable globale que tu incrémentes avec chaque requête.
 
Pour la taille de la page (en gros):
tout est stocké dans une variable avant envoi (tu peux le faire avec ob_start(), ob_flush() si tu veux (regarde sur php.net).
Une fois la page entièrement composée, j'affiche la page et strlen($output); pour me donner la taille de la page.


---------------
...oups kernel error...
Reply

Marsh Posté le 24-05-2002 à 03:20:03    

Ton forum est orienté objet. Le mien, c'est pas le cas, non pas pcq je connais pas la POO (J'ai fait pas mal de C++ et Java durant mon DUT) mais pcq on m'a tjrs dit, la POO avec PHP c'est lourd. Mais quand je vois ton forun, je me dit pas tant que ça en fait :) Je vois le principe pour compter les requetes pour le mien.
Sinon j'ai lu sur la doc nexen.net, des trucs sur les fonction ob_xxxx, ça a l'air interessant. Je vais tester ca. Tu m'as donné des idées :)

Reply

Marsh Posté le 24-05-2002 à 12:21:34    

merci :)
c vrai qu'il se défend relativement bien (surtout qu'il ne tourne que sur un PII 433cel 320Mbram) et qu'il tourne avec des templates.
Le problème est que je met 40.000x plus de temps à le développer (celui là, je l'ai commencé en +- le 20 déc 2001, début janvier 2002 il tournait correctement) depuis il n'y a pas gd chose de visible qui a changé.  Je n'ai pas assez de pratique OO pour savoir comment faire les choses :( en plus que je n'ai pas d'analyse :cry:  je dois toujours faire un compromis entre réutilisabilité et fonctionnalité tout en gardant la possibilité d'affichage javascript et html pour les templates. un casse tête :pt1cable:


---------------
...oups kernel error...
Reply

Marsh Posté le 24-05-2002 à 15:41:36    

pas mal en effet.
Pour ton temps de développement, ne t'n fait pas, le mien je l'ai commencé vers Juin 2001 donc je dois etre encore plus long que toi. Bon il est vrai que c'est pas mon ativité principale et que j'ai d'autres taches à effectuer.
Question: qu'est ce que t'appelles par "template"? je connais surement le principe mais pas le nom.

Reply

Marsh Posté le 24-05-2002 à 16:06:02    

Scoubidoo a écrit a écrit :

pas mal en effet.
Pour ton temps de développement, ne t'n fait pas, le mien je l'ai commencé vers Juin 2001 donc je dois etre encore plus long que toi. Bon il est vrai que c'est pas mon ativité principale et que j'ai d'autres taches à effectuer.
Question: qu'est ce que t'appelles par "template"? je connais surement le principe mais pas le nom.  




 
heu.. le tien est plus déjà complet ;)  :jap:  
(tu sais ce qui me prends le plus de temps ? prendre les décisions.  savoir ce qui est mieux pour le projet.  Genre est-ce que la langue d'affichage du site va être déterminée par le profil de l'utilisateur, ou bien par l'administrateur du site, ou bien l'admin en met une par défaut, et si la langue de l'utilisateur est reconnue alors il l'affiche dans sa langue... enfin tout des trucs comme ça :( )
 
template= page html dans laquelle tu remplaces des tags par les valeurs obtenues du php. (j'utilise fasttemplate).
Donc tu différencies totalement l'affichage du code php.  il n'y a pas de code php dans tes templates.
 
ex:
<!-- montemplate.html -->
<HTML><HEAD><TITLE>{TITRE}</TITLE></HEAD>
<BODY>
{CONTENU}
</BODY>
</HTML>
 
la page php content en gros :
<?
//page.php
$titre= 'Bonjour '.getHostByAddr($REMOTE_HOST);
$contenu= 'Bienvenue sur ma page. <BR>Il est '.date("H:i:s" ). ' et nous sommes le '. date("m/d/Y" ) . '.';
 
$tpl= implode("",@file("montemplate.html" ));
$tpl= str_replace('{'."TITRE".'}', $titre, $tpl);
$tpl= str_replace('{'."CONTENU".'}', $contenu, $tpl);
?>
 
ça permet de doner tes templates à des designers sans qu'ils aient à connaitre autre chose que l'html, js, css, ...

 

[jfdsdjhfuetppo]--Message édité par ethernal le 24-05-2002 à 16:07:14--[/jfdsdjhfuetppo]


---------------
...oups kernel error...
Reply

Marsh Posté le 24-05-2002 à 17:48:55    

OK...donc je connais pas trop en fait :) C'est une classe à part?
pcq je suis chez un hébergeur ou ya meme pas la librairie GD donc...

Reply

Marsh Posté le 24-05-2002 à 18:39:29    

c une classe à part.
Pour l'utliser, il suffit de recopier ce fichier dans ton répertoire (aucune modification logicielle à apporter)


---------------
...oups kernel error...
Reply

Marsh Posté le 24-05-2002 à 18:54:51    

url stp?

Reply

Marsh Posté le 24-05-2002 à 20:13:53    

ethernal a écrit a écrit :

les index oui ça accelere pas mal, mais sinon c'est le javascript qui speed le tout.
Mais ne t'inquiète pas, plus tu ajoutes de fonctionalité, plus c lent, c normal ;)  




c'est pas vrai, regarde ce forum :D


---------------
Protèges carnets personnalisés & accessoires pour bébé
Reply

Marsh Posté le 24-05-2002 à 22:59:51    

Joce, on joue pas dans la même cours. :D lé super optimisé ton forum.
D'ailleurs, tu fais des optimisations sur Mysql? Ajout d'index et tout le tralala.

Reply

Marsh Posté le 25-05-2002 à 00:35:51    

joce a écrit a écrit :

 
c'est pas vrai, regarde ce forum :D  




 
:lol:
j'ai vu hier que vous débugiez... le code de la page forum1.php fait plus de 1904 lignes (??) je me demande comment faire pour en avoir autant  :lol:  
Scoubidoo a raison, on ne joue pas dans la même cour ;)


---------------
...oups kernel error...
Reply

Marsh Posté le 25-05-2002 à 00:42:20    

Scoubidoo a écrit a écrit :

url stp?  




http://www.thewebmasters.net/php/FastTemplate.phtml
 
http://modelixe.phpedit.com/
...


---------------
...oups kernel error...
Reply

Marsh Posté le 25-05-2002 à 00:46:17    

merci, ca va me faire de la lecture :D :D

Reply

Marsh Posté le 25-05-2002 à 12:44:16    

ethernal a écrit a écrit :

 
 
:lol:
j'ai vu hier que vous débugiez... le code de la page forum1.php fait plus de 1904 lignes (??) je me demande comment faire pour en avoir autant  :lol:  
Scoubidoo a raison, on ne joue pas dans la même cour ;)  




g bcp moins de fonctions et mon code en contient 1000, met moi perso j'espace bcp mon code, j'ajoute des commentaires, les conditions, je saute 2 lignes par ex ...
 
ca rend le source bcp + clair pour le debogage

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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