• Super User

    @giulio3x said:

    ciao ayrton, rileggendo, ho notato un particolare, guarda che il file messaggi.txt tiene sempre e teneva anche prima solo 70 messaggi non è che ne contenesse 1000 o che so io e lui manteneva solo i 70 recenti...forse hai interpretato male...e poi il codice in arancione posso eliminarlo o che? ciao aspetto tue notize...

    Lo so che ne conteneva solo 70.
    Ma non puoi aprire il file e salvare gli ultimi 70 ogni decimo di secondo.
    E' logico che perdevi messaggi.

    Il codice commentato puoi eliminarlo.

    Credo cmq di essere stato molto chiaro. Mi hai fatto ripetere le stesse cose almeno 4 volte. Più di cosi non so che dire. Magari non mi esprimo bene 😞


  • User Attivo

    @ayrton2001 said:

    Ho lavorato partendo dal tuoi, il codice decommentato e quello sotto accusa.

    Il tuo script ad ogni caricamente (ogni dieci secondi per utente)

    1. leggeva i messaggi dal file
    2. ne visualizzava 70
    3. Riapriva il file scriveva gli ultimi 70

    Il punto 3 è quello fondamentale.
    In pratica per non far si che il file raggiungesse grandi dimensioni, apriva il file e ne risalvava gli ultimi 70.

    Il punto 1 e 2 sono fondamentali per lo script messaggi.php (e ci credo!!!)
    Il punto 3 lo puoi separare.
    Per esempio puo fare tramite cron un richiamo di un file (che io ho chiamato maintenance.php) che risetta i messaggi agli ultimi 70.
    Ma anziche farlo molto spesso come accadeva prima, puoi farlo ogni 10 minuti.
    Poi dipende da quanti messaggi si scrivono, il tempo di "reset", puoi deciderlo tu.

    File maintenance.php:
    [php]<?php
    include("config.php");
    if((file_exists($file_mess))) {
    $rows_file=file($file_mess);
    $rows_file_ord=array_reverse($rows_file);
    $count=count($rows_file_ord);

    for ($i=0;($i<$count && $i<$num_messag);$i++)
    {
        $online_ut*=$rows_file_ord*;
    }
    $online_ut=array_reverse($online_ut);
    $ins_msg=fopen($file_mess,"w+");
    if (flock($ins_msg, LOCK_EX)) {
        for ($i=0;$i<$num_messag;$i++) fwrite($ins_msg,$online_ut*);
        flock($ins_msg, LOCK_UN);
    } else {
        echo "Errore lock";
    }
    fclose($ins_msg);
    

    }
    ?>[/php]

    Non ho controllato lo script, se vi è qualche errore correggilo tu.

    ultima cosa ayrton tu mi dicesti di controllare il file maintenance.php ma visto che php poco ne so dimmi se l'hai scritto giusto o devo aggiungere magari <html><head> sia all'inizio che alla fine e grazie.


  • Super User

    @giulio3x said:

    ultima cosa ayrton tu mi dicesti di controllare il file maintenance.php ma visto che php poco ne so dimmi se l'hai scritto giusto o devo aggiungere magari <html><head> sia all'inizio che alla fine e grazie.
    niente tag html.

    Più di provare, facendo un backup del file messaggi.php !!!
    Carica il file messaggi.php nuovo.
    Controlla che la chat funzioni

    1. Se non funziona scrivi qui il problema
    2. Se funziona passa avanti.

    Visualizza (credo usi un client ftp) la dimensione del file messaggi.txt
    La vedrai aumentare. E fin qui ci siamo.

    Carica il file maintenance.php
    Richiamalo via browser

    1. Se da errori scrivi qui l'errore
    2. Se non da errori, passa avanti

    Ricontrolla la dimensione del file messaggi.txt, diminuirà. Tutto normale.

    Controlla che la chat funzioni, e appena vedi che la dimensione del file messaggi.txt diventa di circa 1 mb segnati l'orario e fai partire il file maintenance.php.
    Esegui questo più volte.
    Mettiamo caso che l'intervalo medio tra gli orari da te segnati e 20 minuti.
    Vai nel tuo pannello (se lo hai) oppure utilizza un sito che effettua schedulazioni (cron) e fai in modo che il file maintenance.php venga richiamato ogni 20 minuti.


  • User Attivo

    ciao ayrton ho fatto tutte le prove che mi hai detto e in effetti in un primo momento il file messaggi.txt seganava 8,20 kb e subito dopo aver fatto partire il file maintenance segnava 8,08 kb, poi rigurado il cron non so come fare per settare che parta in automatico ogni 20 minuti, tu parlavi di qualche sito ne conosci qualcuno?....oppure bisogna magari integrare l'istruzione nella pagina config.php?, ciao e grazie per tutto quello che mi hai detto fin'ora!:)


  • Super User

    @giulio3x said:

    ciao ayrton ho fatto tutte le prove che mi hai detto e in effetti in un primo momento il file messaggi.txt seganava 8,20 kb e subito dopo aver fatto partire il file maintenance segnava 8,08 kb, poi rigurado il cron non so come fare per settare che parta in automatico ogni 20 minuti, tu parlavi di qualche sito ne conosci qualcuno?....oppure bisogna magari integrare l'istruzione nella pagina config.php?, ciao e grazie per tutto quello che mi hai detto fin'ora!:)

    Prima di tutto ti consiglio di leggere questo: http://it.wikipedia.org/wiki/Crontab
    Se non hai un pannello come cpanel o simile allora usa un servizio di cron esterno:
    http://www.siteuptime.com/
    http://www.crontab.it/

    Non li ho mai provati. Se cerchi su google ne troverai altri


  • User Attivo

    ayrton è meglio che metto l'apertura ogni minuto, 5 minuti o può bastare 20 minuti?

    e se io lo metto ogni minuto potrei ripiombare nello stesso problema che perdo messaggi o no?:?


  • Super User

    [quote]Controlla che la chat funzioni, e appena vedi che la dimensione del file messaggi.txt diventa di circa 1 mb segnati l'orario e fai partire il file maintenance.php.
    Esegui questo più volte.
    Mettiamo caso che l'intervalo medio tra gli orari da te segnati e 20 minuti.
    Vai nel tuo pannello (se lo hai) oppure utilizza un sito che effettua schedulazioni (cron) e fai in modo che il file maintenance.php venga richiamato ogni 20 minuti.[quote]

    In questo modo individui quale è il tempo ideale.
    Magari inizialmente puo essere anche 20 minuti.
    Però piu di fare prove...
    Inizia con 20 e tieni d'occhio il tutto. Se fila liscio lascia, altrimenti metti 15 minuti. Se fila liscio lascia, altrimenti metti 10 minuti. E cosi via.
    Ogni minuto mi sembra una vera esagerazione.
    Dopo venti minuti che dimensioni ha raggiunto il file?

    Non sapendo quanti utenti sono connessi, quanti messaggi scrivono in media al minuto, di quanti caratteri è composto in media ogni messaggio, posso solo dirti di provare.


  • User Attivo

    ok ayrton, farò delle prove, quindi per ora grazie ti faccio sapere tra un mesetto come funziona e se è tutto ok!

    spero di ritrovarti sempre qui disponibile come lo sei sempre stato!

    ciao e grazie!:ciauz:


  • Super User

    Ci sarò (almeno spero 😛 )
    Però mi segno che mi devi un favore 😉


  • User Attivo

    @ayrton2001 said:

    Però mi segno che mi devi un favore 😉

    ⭕cry::D


  • User Attivo

    ciao ayrton, ho notato che a volte il messaggio a qualche utente viene adirittura scritto due volte perchè?:?

    altra curiosità:
    c'è un modo per sapere l'indirizzo ip delle persone che scrivono in chat, e se si come si può fare? grazie!


  • User Attivo

    ayrton... ho notato che ad un utente il messaggio viene scritto due volte come mai? :bho:


  • Moderatore

    ad uno in particolare?
    a te capita?


  • User Attivo

    @massimux said:

    ad uno in particolare?
    a te capita?

    no per ora mai, e si da quando ho fatto la modifica al solito utente adesso sempre due volte, da cosa può dipendere?


  • User Attivo

    ayrton rispondi...da cosa può dipendere?:x


  • User Attivo

    @ayrton2001 said:

    Una curiosità. Magari non è inerente al problema, ma dopo il submit del messaggio disabiliti il reinvio? Se la risposta è no i doppioni possono presentarsi credo

    forse è per questo e come faccio allora a disabilitare il reinvio?:x


  • User Attivo

    nessuna risposta?😢


  • Super User

    @giulio3x said:

    c'è un modo per sapere l'indirizzo ip delle persone che scrivono in chat, e se si come si può fare? grazie!

    $_SERVER['REMOTE_ADDR']


  • Super User

    @giulio3x said:

    forse è per questo e come faccio allora a disabilitare il reinvio?:x

    Tramite javascript
    Per esempio all'onsubmit del forum chiami la funzione waitSubmit

    function waitSubmit() {
    var subValue = document.name del form.name dell'input submit.value;
    if(subValue!="Attendere") { // Se non ha inviato
    subValue = "Attendere";
    document.name del form.name dell'input submit.disabled = "true"; //Disabilito il pulsante
    document.name del form.submit();
    }
    }

    Non ho provato il codice, dunque non so se ho commesso qualche errore


  • Super User

    @giulio3x said:

    nessuna risposta?😢

    Scusa ma ho avuto una marea di appuntamenti, tanto lavoro ed in più una mia tartaruga ha morso l'altra dunque farmacia, cure, etc... 😞