• Super User

    @giulio3x said:

    aggiungo che se ci sono alri modi piuttosto che l'uso di flok ditemi perchè voglio risolvere una volta per tutte questo problema.:?

    Non credo esista altro metodo. Secondo me con l'uso di flock non è possibile perdere messaggi.
    A questo punto mi viene il dubbio se il problema sia la registrazione su file del messaggio o un problema che si verifica prima.
    Per curiosità, quanto pesa il file?


  • User Attivo

    @ayrton2001 said:

    Non credo esista altro metodo. Secondo me con l'uso di flock non è possibile perdere messaggi.
    A questo punto mi viene il dubbio se il problema sia la registrazione su file del messaggio o un problema che si verifica prima.
    Per curiosità, quanto pesa il file?

    ciao, mi potresti dire cosa intendi per "quanto pesa il file" non capisco, aspetto delucidazioni a riguardo, anzi posto il file ins_ut.php e chat.php che provi a dare un'occhiata magari trovi qualcosa:

    chat.php
    [PHP]<?
    /*
    session_start();
    if(!isset($_SESSION['utente']))
    {
    echo "
    <script>
    alert("Se non sei registrato, non hai i permessi per accedere
    a questa pagina");
    </script>
    ";
    header("Location:logout.php");
    exit;
    }
    /
    ?>
    <html>
    <head>
    <title>Happy Chat</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script language = "JavaScript">
    function textCounter(field, countfield, maxlimit) {
    if(field.value.length > maxlimit){
    field.value = field.value.substring(0, maxlimit);
    }
    else{
    countfield.value = maxlimit - field.value.length;
    }
    }
    </script>
    <script language="javascript">
    function aggiungi(y)
    {
    espressione=document.form_ins.messaggio.value;
    new_espressione=espressione + y;
    document.form_ins.messaggio.value=new_espressione;
    }
    </script>
    <style>
    .stile {
    background:#FFFFFF;
    font-family:verdana;
    font-size:8pt;
    SCROLLBAR-BASE-COLOR: #0099CC;
    SCROLLBAR-ARROW-COLOR: #FFFFFF;
    }
    </style>
    </head>
    <body bgcolor="#FBBEAA">
    <?
    include("config.php");
    $nick=$_GET['nick'];
    $nick=strtolower($nick);
    $nick=stripslashes($nick);
    $password=$_GET['password'];
    $password=strtolower($password);
    $password_cr=crypt($password,$nick);
    $password_cr=str_replace("|","
    ",$password_cr);

    if (!(file_exists($file_reg)))
    {fopen($file_reg,"w");}
    $utente=$nick."|".$password;
    $utente_ok=0;
    $ut_regist=file($file_reg);
    $dim_reg=count($ut_regist);
    for ($i=0;$i<$dim_reg;$i++)
    {
    $dati_ut=explode("|",$ut_regist*);
    $nick_ut=$dati_ut[0];
    $pass_ut=$dati_ut[1];
    if (($nick==$nick_ut) & ($password_cr==$pass_ut)) $utente_ok=1;
    }
    if ($utente_ok==1)
    {
    if (!(file_exists($file_online)))
    {fopen($file_online,"w");}
    $dim_file=filesize($file_online);
    $dim_max=14000; // Dimensione in bytes massima per ricreare il file online
    if ($dim_file>$dim_max)
    fopen($file_online,"w");
    $ar_orario=getdate();
    $ora=$ar_orario['hours'];
    $minuti=$ar_orario['minutes'];
    $secondi=$ar_orario['seconds'];
    if (strlen($minuti)==1) $minuti="0".$minuti;
    if (strlen($secondi)==1) $secondi="0".$secondi;
    $data=date("d/m/Y");
    $orario=$ora.":".$minuti.":".$secondi;
    $utente=$nick."|".$data."|".$orario."\n";
    $ins_online=fopen($file_online,"a+");
    fputs($ins_online,$utente);
    fclose($ins_online);
    }
    else
    {
    echo "<center><b>E' STATO INSERITO<br>UN NICK O UNA PASSWORD<br>NON
    CORRETTI,<br>OPPURE NON SEI<br>ANCORA REGISTRATO.</b><br><br>";
    echo "<a href="javascript:history.back();">TORNA AL LOGIN</a></center>";
    exit;
    }
    ?>
    <table width="177" align="center" bordercolor="#000000"
    bgcolor="#E7E9FA" style="border:1px solid;">
    <tr>
    <td width="177" height="21" colspan="6" bgcolor="#BBC2F2"><div align="center">
    <div align="center"><iframe src="messaggi.php" width="177" height="105" scrolling="yes"></iframe>
    </td></tr></table>

    <div align="center">
     <br><table width="177" align="center" bordercolor="#000000" bgcolor="#E7E9FA" style="border:1px solid;">
        <tr>
          <td width="177" height="21" bgcolor="#BBC2F2"><div align="center"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>PERSONE
              ON-LINE </strong></font></div></td>
        </tr>
       <tr>
          <td height="21"><iframe width="177" height="45" src="online.php" scrolling="no"></iframe></td>
        </tr>
      </table>
    

    <br>
    <form method="GET" action="insert.php" name="form_ins" >
    <table width="185" align="center" bordercolor="#000000" bgcolor="#E7E9FA" style="border:1px solid;">
    <tr>
    <td width="185" height="21" colspan="6" bgcolor="#BBC2F2"><div align="center"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>SIMBOLI
    METEO-SMILES</strong></font></div></td>
    </tr>
    <tr><td colspan="4"><div align="center">
    <?
    if ( empty($_['faccina']) ) $faccina = "" ;
    else $faccina = $_GET['faccina'] ;
    echo "
    <select name="faccina" size="1">
    <option value="[em1]" ";
    if ( $faccina == "[em1]" ) echo " selected" ;
    echo ">sereno</option>
    <option value="[em2]" ";
    if ( $faccina == "[em2]" ) echo " selected" ;
    echo ">poco-nuvoloso</option>
    <option value="[em3]" ";
    if ( $faccina == "[em3]" ) echo " selected" ;
    echo ">nuvoloso</option>
    <option value="[em4]" ";
    if ( $faccina == "[em4]" ) echo " selected" ;
    echo ">luna</option>
    <option value="[em5]" ";
    if ( $faccina == "[em5]" ) echo " selected" ;
    echo ">luna-nuvoloso</option>

    <option value="[em6]" ";
    if ( $faccina == "[em6]" ) echo " selected" ;
    echo ">pioggia</option>
    <option value="[em7]" ";
    if ( $faccina == "[em7]" ) echo " selected" ;
    echo ">pioggia-neve</option>
    <option value="[em8]" ";
    if ( $faccina == "[em8]" ) echo " selected" ;
    echo ">temporale</option>
    <option value="[em11]" ";
    if ( $faccina == "[em11]" ) echo " selected" ;
    echo ">temporale-pioggia</option>

    <option value="[em9]" ";
    if ( $faccina == "[em9]" ) echo " selected" ;
    echo ">neve</option>
    <option value="[em10]" ";
    if ( $faccina == "[em10]" ) echo " selected" ;
    echo ">nebbia</option>
    <option value="[em12]" ";
    if ( $faccina == "[em12]" ) echo " selected" ;
    echo ">caldo</option>
    <option value="[em13]" ";
    if ( $faccina == "[em13]" ) echo " selected" ;
    echo ">freddo</option>
    <option value="[em14]" ";
    if ( $faccina == "[em14]" ) echo " selected" ;
    echo ">vento</option>
    </select>
    ";
    ?> </td>
    <td height="21"><div align="center"><img
    src="emoticons/em15.gif" width="15" height="15" onClick="aggiungi('[em15]')"></div></td></tr>
    <tr>
    <td height="21"><div align="center"><img
    src="emoticons/em16.gif" width="15" height="15" onClick="aggiungi('[em16]')"></div></td>
    <td height="21"><div align="center"><img
    src="emoticons/em17.gif" width="15" height="15" onClick="aggiungi('[em17]')"></div></td>
    <td height="21"><div align="center"><img
    src="emoticons/em18.gif" width="15" height="15" onClick="aggiungi('[em18]')"></div></td>
    <td height="21"><div align="center"><img
    src="emoticons/em19.gif" width="15" height="15" onClick="aggiungi('[em19]')"></div></td>
    <td height="21"><div align="center"><img
    src="emoticons/em20.gif" width="16" height="16" onClick="aggiungi('[em20]')"></div></td>

        </tr>
    

    </table>
    <br> <table width="185" align="center" bordercolor="#000000"
    bgcolor="#E7E9FA" style="border:1px solid;">
    <tr>
    <td height="21" bgcolor="#BBC2F2"><div align="center"><font
    color="#000000" size="2" face="Verdana, Arial, Helvetica,
    sans-serif"><strong>MESSAGGIO</strong></font></div></td>
    </tr>
    <tr>
    <td ><form method="POST" action="insert.php" name="form_ins" >
    <table width="170" border="0" align="center">
    <tr>
    <td colspan="2"><div align="center">
    <textarea rows="5" onKeyDown="textCounter(this.form.messaggio,this.form.rem,300);" onKeyUp="textCounter(this.form.cjmsg,this.form.rem,300);" cols="18" type="text" name="messaggio"></textarea>
    </div></td>
    </tr>
    <tr>
    <td><div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Lettere
    rimaste:</font></div></td>
    <td><div align="center">
    <input readonly class="stile" type=text name=rem size=3 maxlength=3 value="300">
    </div></td>
    </tr>
    <tr>
    <td height="26" colspan="2"> <div align="center">
    <?
    echo "<input type="hidden" name="nick" value="$nick">";
    echo "<input type="hidden" name="password" value="$password">"
    ?>
    <input type="submit" name="Submit" value="Invia messaggio">

    </div></td>
    </tr>

    </table>
    </form></td>
    </tr>
    </table>
    </body>
    </html>
    [/PHP]

    forse tu chiedevi del peso del file riferito al pezzo:
    [PHP]if ($utente_ok==1)
    {
    if (!(file_exists($file_online)))
    {fopen($file_online,"w");}
    $dim_file=filesize($file_online);
    $dim_max=14000; // Dimensione in bytes massima per ricreare il file online
    if ($dim_file>$dim_max)
    fopen($file_online,"w");[/PHP]

    e questo è ins_ut
    [PHP]<?
    if(!isset($_POST['Submit']))
    {
    echo "
    <script language="javascript">
    alert("Non hai i permessi per accedere a questa pagina");
    </script>
    ";

        exit;
    

    }
    ?>
    <html>
    <head>
    <title>Registrazione alla chat</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body bgcolor="#FBBEAA">
    <?
    include("config.php");
    $nick=$_POST['nick'];
    $nick=strtolower($nick);/conversione della stringa del nick in minuscolo/
    $nick=stripslashes($nick);/toglie gli slashes aggiunti ad una stringa
    con addslòashes
    /
    $password=$_POST['password'];
    $password=strtolower($password);/conversione della stringa della
    password in minuscolo
    /
    $password_cr=crypt($password,$nick);/criptazione di tipo DES della
    password usando come chiave la stringa del nick
    /
    $password_cr=str_replace("|","*",$password_cr);/*questa la si definisce
    una criptazione aggiuntiva: se nella password criptata sono presenti
    | sono sostituiti con * /
    $age=(int)$_POST['age'];/qquio si verifica che eta sia intera ,altro controllo
    per la sicurezza
    /
    if(!(int)$age)
    {
    echo "
    <script>
    alert("Inserimento di un dato non numerico");
    history.back();
    </script>
    ";
    exit;
    }
    $sex=$_POST['sex'];
    $nation=$_POST['nation'];
    $hobbies=$_POST['hobbies'];
    $nation=stripslashes($nation);
    $hobbies=stripslashes($hobbies);
    if (!(file_exists($file_reg)))
    {fopen($file_reg,"w");}
    $utente_ok=1;
    $ut_regist=file($file_reg);/si memorizza il file in un vettore ;ogni
    elemento del vettore corrisponde ad ogni riga del file
    /
    $dim_reg=count($ut_regist);/conta le righe del vettore/
    /ora che il file è un vettore era meglio utilizzare un foreach
    piuttosto che un for
    /
    for ($i=0;$i<$dim_reg;$i++)
    {
    $utente=chop($ut_regist
    );/chop è alias di rtrim ed elimina spazi ed
    altro dalla fine del file in questo caso dalla riga in cui andremo a
    scrivere
    /
    $dati_ut=explode("|",$utente);/considerando ogni riga come un array si
    separa ogni elemento dell'array con un |
    /
    $nick_ut=$dati_ut[0];
    $pass_ut=$dati_ut[1];
    if ( ($nick==$nick_ut) | ($password_cr==$pass_ut) ) $utente_ok=0; /si
    controlla che il nick o la passwords nopn esistano
    /
    }
    if ($utente_ok==1)
    {
    if (empty($nick) | empty($password) | empty($nation) | empty($sex) |
    empty($hobbies))
    {
    echo "<center><font face="Verdana" size="2">NON HAI RIEMPITO UNO O
    PIU' CAMPI</font></center><br><br>";
    echo "<center><font face="Verdana" size="2"><a
    href="javascript:history.back();">TORNA INDIETRO</a></font></center>";
    }
    else /in caso in cui tutti i campi siano stati tutti riempiti/
    {
    $utente=$nick."|".$password_cr."|".$age."|".$sex."|".$nation."|".$hobbies."\n";
    $ins_utente=fopen($file_reg,"a+");/si scive i dati dell'utente nel
    vettore-filre
    /
    fputs($ins_utente,$utente);
    fclose($ins_utente);
    echo "<center><font face="Verdana" size="3">SEI REGISTRATO ALLA CHAT.<br> PER ENTRARE E SCRIVERE NELLA CHAT, CHIUDI QUESTA FINESTRA DI CONFERMA DELL'AVVENUTA REGISTRAZIONE, ED EFFETTUA IL LOGIN INSERENDO NEI DUE RISPETTIVI CAMPI IL NICKNAME E LA PASSWORD SCELTI.</font></center>";
    }
    }
    else
    echo "<center>Nick o password già utilizzata.<br><a
    href="javascript:history.back();">Torna indietro</a><center>";
    ?>
    </body>
    </html>[/PHP]


  • User Attivo

    certo è anche che a volte non invia frasi da pochissime parole quindi non sò se possa riguradare il peso del file, comunque sappimi dire io aspetto fiducioso per risolvere il problema.


  • User Attivo

    @giulio3x said:

    ciao, mi potresti dire cosa intendi per "quanto pesa il file" non capisco, aspetto delucidazioni a riguardo,

    Ciao giulio3x,

    Penso che ayrton2001 per peso del file intendesse lo spazio occupato (le dimensione del file).


  • User Attivo

    mz non lo so ayrton cosa intendevi? comunque sopra ti ho postato il codice sappimi dire, che sono sempre più disperato:bho:


  • Super User

    Scusatemi, sono stato poco chiaro (stanchezza).
    Intendevo la dimenzione del file in cui salvi i messaggi.
    Viene azzerato ogni giorno, settimanalmente, mensilmente, oppure mai ?
    Me lo chiedo perche magari io faccio delle prove, ma con file piccoli. Se il tuo file ha raggiunto, non so, 10/200 Mb, magari il risultato potrebbe essere diverso.


  • User Attivo

    @ayrton2001 said:

    Scusatemi, sono stato poco chiaro (stanchezza).
    Intendevo la dimenzione del file in cui salvi i messaggi.
    Viene azzerato ogni giorno, settimanalmente, mensilmente, oppure mai ?
    Me lo chiedo perche magari io faccio delle prove, ma con file piccoli. Se il tuo file ha raggiunto, non so, 10/200 Mb, magari il risultato potrebbe essere diverso.

    boh, il file dove vengono memorizzati i file si chiama: messaggi.txt
    io non lo azzero mai (esso può contenere 40 messaggi più recenti)
    e il suo peso come dimensioni è 8,81 kb

    se vuoi magari posso postare la pagina messaggi.php così magari vedi un po':
    [PHP]<html>
    <head>
    <title>Messaggi degli utenti</title>
    <?
    include("config.php");
    echo "<meta http-equiv="refresh" content="$time_refresh">";
    ?>
    <script language="javascript">
    function apri(nick_ut)
    {
    window.open("profilo.php?nick=" + nick_ut,nick_ut,"width=500, height=300, left=200");
    }
    </script>

    </head>
    <body>
    <?
    if (!(file_exists($file_mess)))
    {fopen($file_mess,"w");}
    $rows_file=file($file_mess);
    $rows_file_ord=array_reverse($rows_file);
    $count=count($rows_file_ord);
    if ($count<$num_messag)
    {
    for ($i=0;$i<$count;$i++)
    {
    $dati_utente=explode("|",$rows_file_ord*);
    $nick=$dati_utente[0];
    $msg=$dati_utente[1];
    $nick=stripslashes($nick);
    $msg=stripslashes($msg);
    $nick = str_replace('[em1]','<img src="emoticons/em1.gif">',$nick);
    $msg = str_replace('[em1]','<img src="emoticons/em1.gif">',$msg);
    for ($x=1;$x<25;$x++)
    {
    $img="em".$x;
    $img2="[".$img."]";
    $path="<img src="emoticons/$img.gif">";
    $msg = str_replace("$img2","$path",$msg);
    }
    for ($x=1;$x<25;$x++)
    {
    $img="em".$x;
    $img2="[".$img."]";
    $path="<img src="emoticons/$img.gif">";
    $nick = str_replace("$img2","$path",$nick);
    }

    echo "<b><font face="verdana" size="2" color="#000000">$nick</font>: </b>"."<font face="verdana" size="2">".$msg."</font><br>";
    }
    }
    else
    {
    for ($i=0;$i<$num_messag;$i++)
    {
    $online_ut*=$rows_file_ord*;
    $dati_utente=explode("|",$rows_file_ord*);
    $nick=$dati_utente[0];
    $msg=$dati_utente[1];
    $nick=stripslashes($nick);
    $msg=stripslashes($msg);
    for ($x=1;$x<25;$x++)
    {
    $img="em".$x;
    $img2="[".$img."]";
    $path="<img src="emoticons/$img.gif">";
    $msg = str_replace("$img2","$path",$msg);
    }
    for ($x=1;$x<25;$x++)
    {
    $img="em".$x;
    $img2="[".$img."]";
    $path="<img src="emoticons/$img.gif">";
    $nick = str_replace("$img2","$path",$nick);
    }

    echo "<b><font face="verdana" size="2"><font face="verdana" size="2" color="#000000">$nick</font>: </b>"."<font face="verdana" size="2">".$msg."</font><br>";
    }
    $online_ut=array_reverse($online_ut);
    fopen($file_mess,"w");
    $ins_msg=fopen($file_mess,"a+");
    for ($i=0;$i<$num_messag;$i++) fwrite($ins_msg,$online_ut*);
    fclose($ins_msg);
    }
    ?>
    </body>
    </html> [/PHP]


  • Super User

    scusami, c'è qualcosa che non mi torna o che mi sfugge.

    1. I messaggi li aggiungi sempre
    2. Non azzeri mai il file
    3. Il file contiene 40 messaggi

    Mi sorge una domanda? Come è possibile questo?
    Se aggiungi sempre i messaggi al file e non lo elabori in altro modo come fa a contenere sempre gli ultimi 40 messaggi?


  • User Attivo

    @ayrton2001 said:

    scusami, c'è qualcosa che non mi torna o che mi sfugge.

    1. I messaggi li aggiungi sempre
    2. Non azzeri mai il file
    3. Il file contiene 40 messaggi

    Mi sorge una domanda? Come è possibile questo?
    Se aggiungi sempre i messaggi al file e non lo elabori in altro modo come fa a contenere sempre gli ultimi 40 messaggi?

    boh ayrton queste domande mi spiazzano perchè la chat non avendola fatta io, non so come risponderti, di certo è che il file contiene sempre gli ultimi 70 messaggi più recenti (pardon non 40) come impostato nel file config.php.
    Poi rigurardo l'azzeramento potrei anche farlo ma poichè mi cancella tutti i messaggi non lo faccio mai sennò gli utenti non vedono mai di cosa si è parlato negli ultimi messaggi (non credi?), ti posto il file config.php così vedi:

    [PHP]<html>
    <head>
    <title>Pannello di configurazione</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
    <?
    $homepage="http://www.globalmeteo.altervista.org"; // L'indirizzo dell'homepage del tuo sito
    $file_online="online.txt"; // File contenente gli utenti online
    $file_reg="registro.txt"; // File degli utenti registrati alla chat
    $file_mess="messaggi.txt"; // File dei messaggi inviati agli autenti
    $min_online="1"; // Minuti entro il quale si considera online un utente
    $time_refresh="10"; // Time di refresh dei messaggi (secondi)
    $num_messag="70"; // Numero di messaggi più recenti che vuoi visualizzare
    ?>
    </body>
    </html>[/PHP]


  • Super User

    Ho riletto il codice di messaggi.php (scusa se prima non l'avevo fatto con attenzione.
    In pratica ogni volta che visualizzi i messaggi lui apre il file e lo risalve con gli ultimi 70 messaggi.
    Non mi sembra un granchè, poichè dato che quello script è il più richiamato (ogni 10 secondi da ogni utente, ogni volta apre il file e riscrive. E' possibile che sia qui il problema.
    trasforma messaggi.php cosi:
    [php]<html>
    <head>
    <title>Messaggi degli utenti</title>
    <?php
    include("config.php");
    echo "<meta http-equiv="refresh" content="$time_refresh">";
    ?>
    <script language="javascript">
    function apri(nick_ut)
    {
    window.open("profilo.php?nick=" + nick_ut,nick_ut,"width=500, height=300, left=200");
    }
    </script>

    </head>
    <body>
    <?php
    if (!(file_exists($file_mess))) {
    $fpw = fopen($file_mess,"w"); fclose($fpw);
    }
    $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++)
    {
    $dati_utente=explode("|",$rows_file_ord*);
    $nick=$dati_utente[0];
    $msg=$dati_utente[1];
    $nick=stripslashes($nick);
    $msg=stripslashes($msg);
    $nick = str_replace('[em1]','<img src="emoticons/em1.gif">',$nick);
    $msg = str_replace('[em1]','<img src="emoticons/em1.gif">',$msg);
    for ($x=1;$x<25;$x++)
    {
    $img="em".$x;
    $img2="[".$img."]";
    $path="<img src="emoticons/$img.gif">";
    $msg = str_replace("$img2","$path",$msg);
    }
    for ($x=1;$x<25;$x++)
    {
    $img="em".$x;
    $img2="[".$img."]";
    $path="<img src="emoticons/$img.gif">";
    $nick = str_replace("$img2","$path",$nick);
    }

    echo "<b><font face=\"verdana\" size=\"2\" color=\"#000000\">$nick</font>: </b>"."<font face=\"verdana\" size=\"2\">".$msg."</font><br>";
    

    }

    //$online_ut=array_reverse($online_ut);
    /*
    fopen($file_mess,"w");
    $ins_msg=fopen($file_mess,"a+");
    for ($i=0;$i<$num_messag;$i++) fwrite($ins_msg,$online_ut*);
    fclose($ins_msg);
    */
    ?>
    </body>
    </html>[/php]

    Ora ne sono quasi sicuro, è qui il problema.
    L'unica cosa che è cambiata è che il mio script visualizza i messaggi solamente.
    Poi io farei uno script chiamato maintenance.php che richiamato via cron ogni 10 o 30 minuti rielabora il file (usando flock) e gli lascia soltanto gli ultimi 70 messaggi.
    Se non sono stato abbastanza chiaro o se hai bisogno di ulteriori chiarimenti scrivi pure.


  • User Attivo

    allora, io ho messo il codice modificato come hai detto, poi rispiegami il tutto che voglio capire anch'io:

    allora cosa faceva il file prima e cosa fa adesso che è modificato
    cosa serve se creo il file maintenance.php

    poi il file che hai modificato alla fine il codice è visualizzato in arancione, perche?:
    [PHP]//$online_ut=array_reverse($online_ut);
    /*
    fopen($file_mess,"w");
    $ins_msg=fopen($file_mess,"a+");
    for ($i=0;$i<$num_messag;$i++) fwrite($ins_msg,$online_ut*);
    fclose($ins_msg);
    */[/PHP]

    aspetto delucidazioni e ti ringrazio per tutto quello che mi hai detto fin'ora!:)


  • Super User

    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.


  • 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.

    ciao ayrton, il file messaggi.php che hai modificato l'ho già messo e i messaggi si vedono e tutto ok, ma devi bene spiegarmi cosa intendi farmi con quel file maintenance.php.
    Quel file maintenance che mi hai postato nel tuo ultimo messaggio l'ho già provato ma appena apro il file la pagina è bianca, spiega bene cosa devo fare perchè (credo tu abbia capito, di php poco ne so)...


  • Super User

    Certo che è bianca, non invia nessun output !!! 🙂

    L'ho spiegato in questo passaggio:

    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.

    In poche parole:
    il file maintenance.php resetta il file messaggi.txt conservando gli ultimi 70 messaggi.

    Se fai partire lo script anche se da pagina bianca noterai che le dimensioni del file messaggi.txt diminuiranno.


  • User Attivo

    boh ayrton non ci capisco più niente, anche adesso il file è bianco.

    Ma devo aggiungere qualche pezzo di codice su qualche file per far funzionare sto maintenance o che altro?

    Ma questa cosa del maintenance è obbligatoria farla o no?

    E qual'è la sua funzione? La sua funzione prima quale pezzo di codice la faceva?

    E poi come fanno i messaggi a comparire pure ora che hai tolto qualche pezzo di codice da messaggi.php?

    Spiegami bene perchè sono a terra sennò, ciao aspetto istruzioni.:?


  • Moderatore

    la funzione del maintenance è quella di resettare il file di testo e di riscriverci dentro le ultime 70 righe 🙂

    utile per far si che tutto funga alla perfezione 🙂


  • User Attivo

    ah ho capito serve a fare questo allora, ma qualcuno mi spiega per bene se il file maintenance.php bianco è normale o deve contenere e/o visualizzare qualcosa una volta aperto, e poi io devo aggiungere qualche pezzo di codice su messaggi.php perchè esso funzioni o è tutto ok come tu ayrton me l'hai scritto?


  • User Attivo

    comunque ayrton se mi rispondi a queste domande ne sarei felice...sarebbe molto utile....

    Ma devo aggiungere qualche pezzo di codice su qualche file per far funzionare sto maintenance o che altro?

    Ma questa cosa del maintenance è obbligatoria farla o no?

    E qual'è la sua funzione? La sua funzione prima quale pezzo di codice la faceva?

    E poi come fanno i messaggi a comparire pure ora che hai tolto qualche pezzo di codice dal file messaggi.php, non basterebbe questo? o bisogna assolutamente fare anche il maintenance?


  • User Attivo

    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...


  • Super User

    @giulio3x said:

    ah ho capito serve a fare questo allora, ma qualcuno mi spiega per bene se il file maintenance.php bianco è normale o deve contenere e/o visualizzare qualcosa una volta aperto, e poi io devo aggiungere qualche pezzo di codice su messaggi.php perchè esso funzioni o è tutto ok come tu ayrton me l'hai scritto?

    Che non visualizzi niente è normale, poichè verrà richiamato via cron e la sua utilità è solo quella di mantenere in dimensioni contenute il file messaggi.txt.

    messaggi.php dovrebbe andare bene cosi. Provalo.