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'orecchiesono benvenuti!
Saluti a tutti e grazie per l'attenzione.
Peppe