limitare dimensione file

  • Creatore Discussione Creatore Discussione Marcick
  • Data di inizio Data di inizio

Marcick

Nuovo Utente
11 Gen 2013
10
0
0
Salve a tutti, avrei bisogno di un piccolo aiuto perchè sono proprio alle basi con php.
Ho uno script su un server che riceve delle stringhe e le appende in un file, utilizzo quindi semplicemente fopen e fwrite.
Il file viene periodicamente letto e cancellato da un altro script, ma voglio comunque evitare che (se non viene letto) cresca a dismisura.
Come posso fare perchè ogni volta che viene appesa una nuova stringa il file si "autocompatti" in modo da contenere solo le ultime diciamo 100 stringhe inserite ?
In pratica vorrei che quando viene aggiunta la 101esima stringa, la prima vada persa e il file contenga sempre e solo 100 stringhe.
Grazie in anticipo
Marco
 
Mi sa che per aggiornare in quel modo il file devi copiare tutto il contenuto, salvarti le ultime 99 righe (ignori la prima) e riscrivi il file con le 99 righe più la centesima che metti tu.
Ovviamente sarebbe tutto molto più semplice con mysql.
 
Mi sa che per aggiornare in quel modo il file devi copiare tutto il contenuto, salvarti le ultime 99 righe (ignori la prima) e riscrivi il file con le 99 righe più la centesima che metti tu.
Ovviamente sarebbe tutto molto più semplice con mysql.

Ringrazio tutti e due per l'intervento. Ho capito che con mysql potrei fare tutto e di più, ma ne sono a quasi totalmente a digiuno e richiede inoltre un intervento strutturale che al momento ho problemi ad applicare.
Per spiegare:
C'è un applicativo VB.NET che con metodi POST invia delle stringhe di testo a un server. Lo script le deposita (appendendole) in diversi files di testo a seconda dell'utente cui sono destinate.
Gli utenti, in mobilità con delle applicazioni Android, interrogano periodicamente il server (altro script php) e se trovano un file a loro destinati lo leggono e lo cancellano.
C'è la possibilità che qualche utente non usi l'applicazione per un po' di tempo e il file sul server cresca a dismisura, per questo vorrei conservare solo le ultime 100 stringhe.

Per il momento ho risolto così:
Ho trovato l'istruzione array_slice per prelevare da un file le ultime x stringhe.
Le scrivo in un file temporaneo.
Cancello il file originale.
Rinomino il file temporaneo.

probabilmente vi fa un po' orrore .... prometto di studiare mysql !
Grazie ancora, ciao
Marco
 
Se avessi usato mysql il tuo codice andrebbe molto ma molto più veloce.
L'interazione con i file oltre ad essere scomoda è anche molto lenta.
 
Ok, troverò il modo di riaprire il progetto e di trasformarlo con mysql.
Immagino quindi che mysql preveda dei comandi per "autopurgarsi" o eliminare record più vecchi di una certa data o conservare solo gli ultimi 100 record inseriti, etc, giusto ?
Sarà sempre meglio che sia uno script php a fare da interfaccia tra le mie applicazioni e il database mysql sul server, o fare che le mie applicazioni VB.NET e Android accedano direttamenet al database ?
Avendo bisogni di qualche dritta potrò chiedere qui o sarà più indicato un altro forum su mysql ?
Ciao
 
C'è la sezione adatta anche su questo forum.
Comunque tramite php puoi gestire il database mysql e non ci sarà neanche bisogno di tenere solo gli ultimi records (se è necessario ok, altrimenti non c'è molta perdita di espressività e di velocità).
Ovvio che se i record diventano milioni la velocità si abbassa.
 

Discussioni simili