Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Dati inseriti da un client WEB non sono subito visibili

    Salve a tutti.

    [Situazione]

    Ho cominciato da poco ad usare PHP e MySQL e mi scuso in anticipo se la domanda che pongo per molti è banale. Mi dilungo un attimino per spiegarmi bene.

    Rete LAN con server WEB OpenSuse 10.1, PHP, MySQL, Apache (installazione di default da DVD).

    Sul server è installata una semplice applicazione PHP accessibile in HTTP che consente ai clients LAN di operare sul database inserendo, cancellando e aggiornando dei records.

    La tabella principale del database contiene records corposi (circa 70 campi).

    [Problema]

    Al crescere delle dimensioni della tabella (a circa 80.000 records) si è manifestato un problema inizialmente solo fastidioso (perchè sporadico) ma che ora (siamo a circa 140.000 records, in rapida crescita) è serio.

    Se il client A inserisce un record non è detto che il client B e il client C lo "vedano" subito dopo l'inserimento; riescono a "vederlo" dopo un 10-15 minuti OPPURE se chiudono il browser e lo riaprono.

    [Soluzioni tentate]

    Ho ricontrollato il codice PHP che genera le pagine HTML e ho fatto in modo (CREDO) che le stesse non consentano l'uso di cache, con nessun esito positivo rispetto al problema segnalato.

    [Richiesta di aiuto]

    Al momento quello che mi interessa sapere è:

    Data una query del tipo:

    $query = "INSERT INTO nome tabella (campo1, campo2, campo3) VALUES ('valore1', 'valore2', 'valore3')";

    eseguita in PHP con

    mysql_dbquery($query);

    che non restituisce alcun errore (controllo il valore restituito da mysql_error()... e del resto alla fine il record risulta presente!)

    Le successive interrogazioni sono basate su query semplici del tipo

    SELECT campo1, campo2 FROM nometabella WHERE ...

    Quali sono le impostazioni del SERVER MYSQL (o APACHE?) che possono generare il malfunzionamento che vi segnalo? come posso intervenire su tali impostazioni?

    [Codice significativo]

    <?php
    header("ETag: PUB" . time());
    header("Last-Modified: " . gmdate("D, d M Y H:i:s", time()-10) . " GMT");
    header("Expires: " . gmdate("D, d M Y H:i:s", time() + 5) . " GMT");
    header("Pragma: no-cache");
    header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate");

    // ......
    // ......

    $db = "nomedb";
    $Connessione = mysql_connect("host" ,"user","password");

    // la connessione riesce

    $query = "INSERT INTO nometabella (campo1, campo2, campo3) VALUES ('valore1', 'valore2', 'valore3')";

    mysql_db_query($db,$query);

    // l'esecuzione della query non da luogo ad errori

    mysql_close($connessione);

    ?>

    Qualunque suggerimento o tirata d'orecchie sono benvenuti!
    Saluti a tutti e grazie per l'attenzione.

    Peppe

  2. #2
    Ciao,
    2 cose che hai scritto mi hanno fatto pensare:
    il fatto che i clients B e C vedano le modifiche dopo cira 15min oppure dopo riaver aperto il browser mi portano a pensare che ci sia qualcosa legato alle sessioni:
    infatti 15 min è il tempo in cui il web server distrugge una sessione e lo stesso vale quando il client viene chiuso.

    Però,
    ti ripeto,
    è solo una supposizione,
    potrebbero essere coincidenze.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  3. #3
    Utente di HTML.it L'avatar di joker06
    Registrato dal
    Dec 2006
    Messaggi
    782
    grazie mille.
    sistemato. per risolvere il problema del prezzo come lo sistemeresti?

  4. #4
    Utente di HTML.it L'avatar di joker06
    Registrato dal
    Dec 2006
    Messaggi
    782
    scusate ho sbagliato post!

  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da mirkoagrati
    Ciao,
    2 cose che hai scritto mi hanno fatto pensare:
    il fatto che i clients B e C vedano le modifiche dopo cira 15min oppure dopo riaver aperto il browser mi portano a pensare che ci sia qualcosa legato alle sessioni:
    infatti 15 min è il tempo in cui il web server distrugge una sessione e lo stesso vale quando il client viene chiuso.

    Però,
    ti ripeto,
    è solo una supposizione,
    potrebbero essere coincidenze.

    Ciao
    Questo post mi interessa, e non ho risposto perchè in effetti non ho idea di cosa possa essere, ma se posso fare qualche obiezione:

    1. Il problema avrebbe dovuto manifestarsi se pur raramente anche all'inizio (magari non se ne è semplicemente accorto).
    2. Perchè dici che 15 minuti è il tempo di durata delle sessioni?
    Generalmente di default è 1440 secondi che in minuti sono 24, e comunque dipende dalla configurazione del server.
    Inoltre se l'utente non si slogga, ma vede il record dopo 10-15 minuti mi sento di escludere il problema delle sessioni, perchè la sessione se l'utente continua a lavorare rimane sempre la stessa.

    Una cosa non è stata specificata, se il client A inserisce un record, il client B e C non vedono l'inserimento per 15 minuti circa, mentre il client A? Lo vede subito?

    Usi qualche template engine tipo smarty? magari è la sua cache a intervenire...

    ciao

  6. #6
    Originariamente inviato da mirkoagrati
    Ciao,
    2 cose che hai scritto mi hanno fatto pensare:
    il fatto che i clients B e C vedano le modifiche dopo cira 15min oppure dopo riaver aperto il browser mi portano a pensare che ci sia qualcosa legato alle sessioni:
    infatti 15 min è il tempo in cui il web server distrugge una sessione e lo stesso vale quando il client viene chiuso.

    Però,
    ti ripeto,
    è solo una supposizione,
    potrebbero essere coincidenze.

    Ciao
    Ci avevo pensato anche io, ma i coockie di sessione restano attivi, perchè tutti i clients lavorano praticamente senza interruzione

    Ciao e grazie

  7. #7
    Originariamente inviato da gianiaz

    Una cosa non è stata specificata, se il client A inserisce un record, il client B e C non vedono l'inserimento per 15 minuti circa, mentre il client A? Lo vede subito?

    Usi qualche template engine tipo smarty? magari è la sua cache a intervenire...

    ciao
    Esatto, il client A lo vede subito, gli altri no.

    Non uso nessun template, gli script sono stati scritti a mano con un semplice editor di testo.

    Ciao e grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.