Effacement d'un fichier qui a une certaine taille - PHP - Programmation
Marsh Posté le 28-02-2006 à 23:35:18
ben avant d'inserer une ligne , tu vérifies avec filesize() .
Marsh Posté le 01-03-2006 à 00:36:30
le problème si tu supprimes des que ton fichier dépasse une certaine taille, c'est que tu vas perdre la conversation en cours sur le forum.
Ou alors il faut réécrire une partie.
Par ex ce que je te conseille c'est de déclencher le nettoyage à un moment donné (filesize par exemple)
Là tu réécris ton fichier .txt en reprenant que les 20 ou 30 premières lignes de ton fichier. Si on supposes que ton ficheir texte s'écrit par ordre chronologique (le plus récent au haut)
J'espère avoir été assez claire et que ma solution te conviendra.
Bonne chance
Marsh Posté le 01-03-2006 à 04:44:06
Pour faire l'effacement à date fixe, tu fais un gestionnaire de tache sous windows, ou un cron sous linux, qui appelle la page PHP qui fait le nettoyage
Marsh Posté le 01-03-2006 à 09:39:08
mais il faut pas qu'il efface son fichier, sinon il perd la discusssion en cours. En plus ac un cron, tu sais pas si son chat va bien marcher ou pas.
si tu as 2 personnes par jours, ton fichier sera pa sle même que s'il y a 70 personnes en permanence.
le filesize est donc plus approprié et puis ca te permet de conserver les dernières conversations.
Marsh Posté le 01-03-2006 à 16:02:51
et bien l'idée du filesize m'interesse mais comme je suis debutant en php et que ce chat est mon premier script, je n'ait aucune idée de comment utiliser filesize, pourriez vous donc me donner quelques indications pour que je reussise?
si vous voulez voir mon script c'est ici :
http://membres.lycos.fr/blackonix80/chat/
sachant que c'est ma premiere vrai source php et qu'elle a encore besoin d'étre ameliorée. biensur ici la frame lycos s'insere, mais ce ftp etant un ftp de test peut m'importe car une foi sur un ftp sans pub elle n'apparaitra plus.
merci de votre aide
Marsh Posté le 01-03-2006 à 16:12:37
euhh ... bin ... disons que la on va avoir du mal a voir le code source de ta page
Marsh Posté le 01-03-2006 à 16:18:07
Conserver le pseudo dans le champ qaund ya un submit du formulaire c'est pas mal.
Faire un focus sur le champ message aussi peut être pratique.
Et sinon pour le filesize, ba c'est pas compliqué :
if ( filesize("chat.txt" )>1000 ) unlink("chat.txt" );
Marsh Posté le 01-03-2006 à 16:19:15
non grrrr si tu utilises unlink tu vas tt supprimer même ta discussion en cours. Sauvegarde qq lignes d'abord
++
Marsh Posté le 01-03-2006 à 16:23:03
a oui pardon.... je suis bête!
Lecture > Découpage de la chaîne > Suppression du fichier > Réécriture de la chaîne ainsi découpée
Mais c'est un peu lourd ça.
Marsh Posté le 01-03-2006 à 17:01:51
me source en elle méme est lourde, mais pour ce qui est des sources les voicie:
Code :
|
Pour ce qui est du html je suis peut etre debutant mais pas idiot
Marsh Posté le 01-03-2006 à 18:12:16
bah c'est dur de me donner des nom de choses comme ca sans me donner un exemple lol
Marsh Posté le 01-03-2006 à 18:15:17
il y a quand même un lien dans son message (passe la sourie sur ftruncate de son message) mais c'est vrai que l'exemple de la page visé par le lien n'est pas trés parlant si on a pas l'habitude de manipuler des fichiers en php.
Marsh Posté le 01-03-2006 à 18:18:06
et bien a vrai dire je n'ait pas l'habitude du tout, tout ce que j'avait fait jusqu'a maintenant c'est modifier des sources de scripts deja fait, mais de la a en créer un moi méme c'est deja un exploit, vouloir ameliorer mon script devient tres dur si je n'ait pas d'exemple concret a ma disposition.
Marsh Posté le 01-03-2006 à 18:19:28
sinon j'ai une autre question, comment faire pour que lorsque l'ont clique sur un smiley un code genre s'ajoute dans le champ message?
peut etre qu'en attendant les pro pour la premiere question des gens un peut moin callés pourront repondre a celle ci
Marsh Posté le 01-03-2006 à 18:48:22
Code :
|
ce bout est dans le if et dans le else. donc tu l'enleves des 2 , t'enleves le else et tu le mets apres le if. pour les smileys , c'est la fonction str_replace.
Pour ton fichier , tu retiens quelle solution au final ?
Marsh Posté le 01-03-2006 à 20:15:16
pour mon fichier je pense choisir la premiere solution mais j'attend des exemple pour ce que vous me proposez .
je sais pour les smiley mais en fait je voudrai que lorsque l'on clique sur l'image d'un smiley bah que dans le champ message la ou on tappe le message y ait : ) qui s'affiche. comme ca la personne peut ajouter des smiley dans son message en cliquant dessus un peut comme sur le forum ici, quand on fait un message on peut cliquer a gauche sur les smiley pour les ajouter dans le message
Marsh Posté le 01-03-2006 à 20:16:14
pour ca tu dois utiliser du JS
Marsh Posté le 02-03-2006 à 19:27:45
qui recup le smiley sur lequel tu as cliqué et qui rajoute le code dans ta zone de saisie.
Marsh Posté le 03-03-2006 à 06:33:43
hum vous pourriez maider a faire ca? car en javascript a part document.write()... jsuis un peu une bille
Marsh Posté le 03-03-2006 à 07:45:11
documetn.write() est deprecié, maintenant il faut trouver la bonne balise (par exemple en l'identifiant par son id avec getelementbyID) et changer son contenu avec innerhtml...
ce sont des noms de fonction donc il doit y avoir des majuscules, fait une recherche Google pour savoir comment ca marche, des javascripts de smileys tout fait doivent etre monnaies courantes sur Internet
Marsh Posté le 03-03-2006 à 13:03:01
je te remercit, pour ce qui est de google, j'ai trouver des choses mais seulement en AJAX, les scripts n'etaient pas vraiment adaptés a ce que je voulait faire et j'était incapable de les modifier. mais si tu trouve tiens moi au courant
Marsh Posté le 03-03-2006 à 14:04:42
ben en même temps
1-> tu clique sur repondre dans le forum hardware (pour avoir l'espace de reponse)
2-> tu affiches la source de la page
3-> tu cherhce une balise image correspondant au gif animé:
Code :
|
4-> tu cherche la fonction javascript qui s'appelle putSmiley (plus haut dans le <head> )
Code :
|
5-> apres il faut trouver TAinsert plus dur a trouver, il est dans un fichier *.js séparés: http://forum.hardware.fr/include/editPost.js
Code :
|
apparament le champs texte a l'id="contenu"
si je me suis cassé le cul a te donner les étapes et pas uniquement le resultat (peut etre incomplet d'ailleurs j'ai pas tésté) c'est pour que tu apprene à chercher par toi même
Marsh Posté le 03-03-2006 à 19:30:55
je te remercit!! sincerement, chercher tout seul j'ai l'habitude la preuve c'est la premiere foi que je vient demander un truc sur ce forum, merci beaucoup!
Marsh Posté le 03-03-2006 à 19:51:18
bizard tout marche parfaitement en local mais plus sur le net, pensez vous qu'il serai possible que lycos bloque le script?(j'ai bien modif contenu par message et mit des titres au smiley)
Marsh Posté le 04-03-2006 à 08:24:47
ben javascript c'est interprete cote client alors a moins d'ajouter des javascripts de pub avec des fonctions au noms identiques je comprends pas bien...
tu devrait reagarder ton site avec Firefox et verifier la console javascript (le point d'exclamation rouge en haut a droite), ca t'aideras peut etre a trouver l'erreur
Marsh Posté le 04-03-2006 à 08:45:58
ben le probleme c'est que en local avec easphp le script marche niquel il m'ajoute bien les codes de smileys, mais sur le net il fait juste un espace sans ajouter le code du smiley, j'ai donc penser que la frame de lycos contenait des javascript empechant l'utilisations de scripts javascript.
Marsh Posté le 04-03-2006 à 08:48:20
dans la console la seul erreur que j'ai trouver pouvant etre en rapport avec ca est : Erreur : uncaught exception: Permission refusée d'appeler la méthode Location.toString, le reste c'est un autre script que j'ai ajouter apres
Marsh Posté le 04-03-2006 à 09:06:17
bon deja getElementbyID ca veut bien dire ce que ca veut dire, ton input doit avoir l'ID message (il me semblait l'avoir dit mais bon)
apres dans la console moi j'ai ca comme erreur:
Erreur : uncaught exception: Permission refusée d'obtenir la propriété Window.sf qu i apparait encore et encore regulieremement (evenement onload causé par ton iframe peut etre)
aucune idée de ce que c'est, Gatsu si tu est par la ?
un autre truc ou qu'on clique, dans la fenetre il cree un autre contenu a l'interieur du contenu (et ainsi de suite une sorte de mise en abime quoi), ca vient surement de ca:
<form name="form1" method="post" action="" Onclick="affichresultat()">
tous ca avec Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7
Marsh Posté le 04-03-2006 à 11:55:39
oui ca je sais ct un test que j'ai fait hier soir pour voir si il serai possible d'envoyer les données vers la iframe de reactualiser celle ci, et d'inscrire le message, mais a priorit ca crée une boucle, dommage ca aurai permit d'eviter la redirection vers envoie.php
pour ce qui est du window.sf je l'ait aussi et ne sais pas ce que c'est.
pour le getElementbyID il a bien l'id message regarde :
Code :
|
donc ce n'est pas d'ici que ca provient de plus si le script ajoute une espace au lieu d'un code dans le champ texte c'est bien que le getElementbyID est bien sur message, mais c'est les codes smiley qui s'ajoutent pas, alors qu'ils le font en local
et mes smiley sont:
Code :
|
svp vous enervez pas j'ai tout bien fait et ca marche en local
Marsh Posté le 04-03-2006 à 21:29:02
ah merci ou effectivement c'etait ca, j'avait pas comprit que c'etait l'input qui devait avoir l'id message je pensait que c'etait dans le script javascript que tu me disait.
Merci beaucoup a toi
Marsh Posté le 05-03-2006 à 19:13:24
Code :
|
c'est pas mal ca, mais comment je peut faire pour sauvegarder mes dernieres lignes?
Marsh Posté le 05-03-2006 à 22:15:17
c'est ce que je te dis depuis le début, avant de supprimer ton fichier il fo que tu sauvegardes les dernieres lignes.
pour cela tu fais un fopen tu enregistres les 10 1ere lignes, et apres tu supprimes le reste.
A toi de voir comment tu veux faire. moi je serais toi je l'ouvrirais en lecture ecriture comme ca tu fais tout en meme temps.
Marsh Posté le 06-03-2006 à 20:21:38
d'accord et c'est quoi la commande pour sauver les 10 lignes? car je connais pas cette commande
Marsh Posté le 06-03-2006 à 21:00:40
Code :
|
je pense que ca devrait marcher
Marsh Posté le 06-03-2006 à 22:38:34
A signaler que si tu as moins de 10 lignes dans ton fichier ( le feof($fd) le controle), il est inutile de faire la procedure de delete
Marsh Posté le 06-03-2006 à 22:50:37
Salut,
tu mets ton fichier dans un tableau à l'aide de la fonction file() si ton fichier a une taille supérieure à la taille que tu désires (regarde avec la fonction filesize). Pour réduire la taille tu fais un array_slice() sur le tableau obtenu à l'aide de la fonction file, un petit implode pour réassembler le tableau avec des "\n" comme séparateurs et hop tu enregistres le fichier en mode w.
http://fr.php.net/manual/fr/function.array-slice.php
http://fr.php.net/manual/fr/function.file.php
http://fr.php.net/manual/fr/function.implode.php
a +
Marsh Posté le 28-02-2006 à 22:56:49
Bonjours a tous,
j'ai créer un petit chat sans base de donnée avec une frame qui se reactualise toutes les 10 secondes
mais je voudrai que le fichier texte qui contient les message s'efface arriver a une certaine taille, et ca demaniere automatique.
cela est il possible en php? si non est il possible de l'effacer par exemple tout les jours a minuit?
Amicalement
Black_Onix