Newsgroup: it.comp.www.php
Titolo: Monitorare in tempo reale file di testo

Salve a tutti,
Ho la necessità di monitorare un file di testo con records a lunghezza
fissa (400 crt) alimentato da un'applicazione di rilevazione dati da
terminali di fabbrica. Tale file viene  ovviamente alimentato di nuovi
records in maniera temporalmente casuale.
Per ciascun nuovo record accodato dovrò provvedere alla sua lettura e
riscrittura con informazioni accessorie ricavate dal un database MySql.
Tutto ciò prevede che il mio script sia continuamente "sveglio": il
mio cruccio principale risiede nelle modalità  di progettazione di un
simile script. Generare un loop infinito di tipo While potrebbe
bloccarmi il server. Potrei mandarlo in sleep al massimo per un secondo
anche se sarebbe meglio di no dal momento che devo reagire nel più
breve tempo possibile. Come si potrebbe risolvere il problema nella
maniera meno dolorosa possibile ?
Grazie per eventuali suggerimenti.

maniera meno dolorosa possibile ?
Immagino che il file sia su un server, se fosse tutto sulla macchina locale
ci sarebbero varie soluzioni.
Un secondo e' tanto, potrebbe bastare forse molto meno.
Prova con usleep, settando diversi valori e monitorando la percentuale di
CPU utilizzata.
Se no considera l'ipotesi di un server (anche scadente) dedicato.
AS

 riscrittura con informazioni accessorie ricavate dal un database MySql.
Cioe` devi lavorare in-place sul file? Occhio (molto occhio) ai casi di
concorrenza. Potresti trovarti col file vuoto perche` entrambe i
processi lo scrivono contemporaneamente.
Ti conviene rivedere tutta la logica (se puoi), per esempio usando delle
pipe o dei socket.
Bye.
-- 
Alessandro Pellizzari

Il file di testo in questione si trova su un Client Win2000 e viene
generato da un'applicazione ivi residente, cui accedo con Samba
attraverso il server Linux dove gira la mia applicazione (LAMP, per
farla breve). Il motivo per cui utilizzo PHP è dovuto al fatto che
altre parti del gestionale all'uopo dedicato sono scritte appunto in
PHP. Solo la mia applicazione ci andrà a scrivere, oltre
all'applicativo generatore dei records (che come ho già detto risiede
su Win2000).
Il problema si leggere sempre e solo gli ultimi record accodati in
maniera asincrona ritengo sia un mix di funzioni stringa. Secondo voi
quale potrebbe essere la più performante ?
Molte grazie.


la sparo così non ho letto molto bene...
Non potresti invertire le cose cioè visto che il programma che popolo questo 
file è uno perchè non fare in modo che il programma stesso notifichi al 
programma php
che sta aggiornando (magari con data ed ora)
Io fare una cosa del genere
Software standalone (SS) -> modifica file
SS -> notifica sofware php  (SPHP)
SPHP -> controlla periodicamente ogni tot (magari usando cron adesso è la 
prima che mi viene in mente) la sua coda di messaggi
SPHP -> tramite data e confronti col suo db interno o qualcos'altro verifica 
i nuovi record nel file
e poi ricomcia tutto
spero di essere stato di aiuto

 CPU utilizzata.
occhio che usleep non funziona su macchine win
ciao,
Luca(riello) 

 wrote in message
news:443122ce$0$36931$4faf...@reader3.news.tin.it...

Nella versione 4 no, ma a partire dalla 5.0.0 funziona anche su Windows.
AS

 e poi ricomcia tutto
Ottimo consiglio, lo sottoscrivo.
Ad esempio, la macchina che produce il file potrebbe richiamare una pagina
del web server, che fa partire il processo PHP di conversione.
Come ti ha detto qualcuno, occhio alla concorrenza.
AS

Ringrazio coloro che mi hanno risposto. Premetto che non posso mettere
mano al programma che accoda i records nel file di testo: la
generazione di tale file costituisce l'interfaccia attraverso la quale
posso colloquiare con essa. Alessandro mi suggeriva tra le varie
soluzioni l'utilizzo di un socket. A parte il fatto che dovrei
documentarmi meglio per conoscerne l'implementazione, ma mi chiedo, in
base al contesto descritto, come dovrebbe essere il socket all'altro
capo della connessione.


bè anche coi sockete devi mettere mano al sofware .
bye...


Vero ho appena controllato. Strano, credevo dipendesse dal sistema operativo 
che non ha un microtimer...
forse dalla 5.0 arrotonda i micro a milli secondi per macchine win.
ciao,
Luca(riello)