cs_megatchu
Messages postés9Date d'inscriptionjeudi 26 octobre 2006StatutMembreDernière intervention28 février 2009
-
1 janv. 2009 à 15:59
cs_megatchu
Messages postés9Date d'inscriptionjeudi 26 octobre 2006StatutMembreDernière intervention28 février 2009
-
4 janv. 2009 à 14:58
Bonjours, ayant voulu créer un système de logs automatique que mes utilisateurs pourraient voir directement sur le net, après beaucoup de recherche, je suis tomber sur une source plus qu' intéressante, celle de kenji, j'ai eu quelques petits problèmes d'hébergement sur free ( mais free on le sait bien, c'est gratuit, et tout ce qui ets gratuit, y'a mieux ;o ) et donc je me suis tourné sur un hebergement proffessionnel, le fichier à effectivement été envoyé mais... pas entièrement.
J'ai localisé le problème qui viendrait de la ligne :
<li>var %pos $ftpdata_get(%sock,pos) , %file $ftpdata_get(%sock,file)
</li><li> bread %file %pos 8192 &data
</li>Cependant, je ne sais pas vraiment d'ou viens le problème, j'ai modifier les valeurs de %pos et 8192 manuellement, et je peut plus ou moins avoir le fichier en entier, mais étant donné qu'il change dès qu'un utilisateur parle, arrive, part ou quit, je ne peut pas vraiment m'amuser à remodifier ces lignes à chaques actions...
J'espère donc trouver une réponse dans ce site de qualité, je suis ouvert à toute proposition d'explication plus approndonfis ;)
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 2 janv. 2009 à 18:47
En réflechissant, le 8192, c'est en gros pour découper un fichier en parties de 8192 octets chacune, pour justement éviter de déborder (je viens d'aller voir le code d'origine).
Or le code que je t'ai donné ne fait pas ça.
Essaye ceci :
; tant que la totalité du fichier n'a pas été envoyée..
if (%pos < $file(%file).size) {
bread %file %pos $iif($calc($file(%file).size - %pos) < 8182,$v1,$v2) &data
sockwrite $sockname &data
ftpdata_add %sock pos $calc(%pos + $bvar(&data,0))
}
J'y crois pas trop, mais bon, autant essayer.
Zova
Messages postés150Date d'inscriptionmardi 15 juin 2004StatutMembreDernière intervention24 août 20102 1 janv. 2009 à 17:11
Pour moi ton problème se situe dans ces lignes là :
; tant que la totalité du fichier n'a pas été envoyée..
[javascript:mhlp('ifthenelse#c_if'); if](%pos<[javascript:mhlp('fileident#i_file'); $file](%file).size){
[javascript:mhlp('binaryfile#c_bread'); bread]%file%pos8192 &data
[javascript:mhlp('socket#c_sockwrite'); sockwrite][javascript:mhlp('socket#i_sockname'); $sockname] &data
ftpdata_add%sock pos [javascript:mhlp('textident#i_calc'); $calc](%pos + [javascript:mhlp('binaryfile#i_bvar'); $bvar](&data,0))
}
mais je n'ai pas exactement tout compris à ce que tu essaye de faire, et je n'ai jamais testé ce snippet donc voilà une petite orientation qui je l'espère pourra t'aider ;)
.:]| z0va / Zova |[:.
cs_megatchu
Messages postés9Date d'inscriptionjeudi 26 octobre 2006StatutMembreDernière intervention28 février 2009 1 janv. 2009 à 17:42
Bin en fait, je voudrais faire un système de log dans le style de BotTool qui est payant, donc je voulais le faire a ma sauce histoire de l'avoir gratuitement.
Et pour m'éviter d'uploader constamment a la main le fichier des logs, j'ai fait un script rapide dans le genre :
on *:text:*:#: {
if ($date != %date) {
set %date $date
write html/logs $+ .html Logs du $date
sauf que ftp_send envois bien le fichier, mais il manque un bout du log, et donc je pensais que le problème venais de là, je vais voir ta suggestion merci ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Zova
Messages postés150Date d'inscriptionmardi 15 juin 2004StatutMembreDernière intervention24 août 20102 1 janv. 2009 à 17:54
hum ta solution est bien moyenne car si quelqu'un flood^^
tu devrai opter pour un timer toutes les n minutes qui inscris dans le fichier html les phrases manquantes, ça rallongerait le code mais je pense que ça serait une solution bien meilleure :)
cs_megatchu
Messages postés9Date d'inscriptionjeudi 26 octobre 2006StatutMembreDernière intervention28 février 2009 2 janv. 2009 à 18:09
Ah effectivement je ne sais pas si c'est ton intervention uaip ( ça a commencer a se resoudre tout seul dans la matiné ) mais ça marche ! xD
Merci ;)
Et j'ai un autre probleme ( oui, moi et les socket ça fait la racine de 2 :/ )
Puisque la version .html marche, je souhaite donc en faire une version en .txt afin de l'exploiter plus facilement sur une administration, seulement, quand je l'upload j'ai :
/sockwrite: 't_ftpsend_72752718' queue would exceed 16384 bytes (line 88, senlogstxt)
Ca correspond au "paragraphe" :
; tant que la totalité du fichier n'a pas été envoyée..
if (%pos < $file(%file).size) {
bread %file %pos 8182 &data
sockwrite $sockname &data
ftpdata_add %sock pos $calc(%pos + $bvar(&data,0))
}
J'ai déja tenté de remplacer 8182 par $calc($file(%file).size - %pos), et ça marche un peu mieux, mais le probleme reste persistant : au lieu d'avoir 10 fois le message je ne l'ai plus qu'une seule fois, mais le fichier ne s'upload pas.
(je pense a une incompatibilité avec l'autre ftp_send, en sachant que j'ai renommé l'alias du deuxieme en ftp_sendd afin de m'y retrouver )