Newsgroup: it.comp.www.php
Titolo: Architettura di un eliminacode

Un amico mi ha chiesto consiglio per implementare un semplice
eliminacode in versione web in lan.
 
Supponiamo che ci sia una situazione di questo tipo: 4 monitor LCD con
PC embedded (con windows embedded sopra - 1 Pc collegato ad ogni
monitor ) tutti i PC in rete tra di loro  (in LAN  - esempio con IP
192.168.0.1 / 2 / 3 / 4 )
 
Su ogni monitor gira un player multizona (divide lo schermo in diverse
parti): per esempio in una parte visualizza un video,  in un'altra
parte un feed rss etc (tipo quello degli autogrill nelle autostrade)
 
In una di queste parti dello schermo viene appunto visualizzata una
pagina web (nel senso che c'è il "motore" di explorer che punta ad un
URL e visualizza quello che trova lì)
 
Su 1 dei 4 PC gira apache con php (esempio una installazione di
xampp).
 
Si vuole che la regione del monitor punti ad una paginetta web
(potrebbe essere un iframe o una pagina fatta ad hoc ) in modo da
visualizzare il numero attuale del contatore.
 
L'incremento del contatore avverrebbe con la pressione di un PLU
(tasto bilancia) che in pratica puo' essere configurato per mandare
una certa stringa ad un certo IP su una certa porta (esempio al
192.168.0.1 alla porta 1111 )
 
Come realizzereste  un sistema eliminacode con PHP in modo che sulla
parte pagina web di ogni monitor venga visualizzato il numero
dell'eliminacode incrementato dalla pressione di un PLU di una
bilancia in LAN ?
 
 
Al momento ho fatto una demo molto semplice che salva il numero
attuale del  contatore su file
 
Sempre al momento (per test) ho simulato l'incremento che dovrebbe
fare la biliancia con un semplice paginetta in php (che incrementa/
azzera il numero del contatore nel file)
 
Ho creato un piccolo file iframe.php che visualizza (formattandolo un
attimo  il numero corrente, in pratica legge il file) impostando con
il meta refresh il valore 1 secondo.
 
Il pratica il player visualizza questo iframe che fa il refresh ogni
secondo  (in questo iframe dove c'e' codice php che legge il numero
del contatore dal file)
 
Questa simulazioncina (senza bilancia ) al momento più o meno
funziona.
 
***************************
 
Ora volendo fare una cosa seria e robusta immagino che si debba fare
qualcosa del genere:
 
1) Creare servizio con un linguaggio tipo C o python (o in java come
qualcuno diceva, mi riallaccio al thread precedente) che  ascolta su
una porta (configurabile) la stringa in arrivo dalla bilancia (alla
pressione di un PLU da parte dell'operatore)
 
 
2) Cosa conviene utilizzare per memorizzare il contatore ? Cosa è più
robusto ?
 
Quando riceve la stringa :
Opzione A) incrementa il numero nel file  (ci potrebbero essere
problemi nell'utilizzo di un file ? tipo di robustezza del tutto ?
l'accesso concorrente sarebbe demandato al servizio che dovrebbe
serializzare due richieste di incremento contatore provenienti per
esempio da 2 bilance in contemporanea
 
Opzione B) uso dbms come sqlite (non ho mai usato questo dbms: è
robusto ? )
 
Opzione C) uso Mysql (vale la pena scomodare mysql per gestire un
semplice contatore ?)
 
 
3) tutti i client richiamano (collegandosi alla macchina con apache)
la paginetta con il codice php che visualizza il numero attuale del
contatore
 
Puo' andare bene l'approccio paginetta/iframe con il meta refresh o si
possono fare cose piu' eleganti o intelligenti ?
 
 
Ho un po' annegato le domande nello scritto, spero di non aver fatto
troppo casino.
 
Grazie
Saluti
 
 


 
fai una chiamata ajax con un ritardo di 5/6 secondi dalla sua fine
usando settime_out() di javascript se per caso una chiamata impiega 4/5 
secondi perche il sistema ha i cazzi suoi accumula un ritardo sulla 
chiamata senza madare il server in overload e poi crasha (dato che fara 
tutto) quando l'utende dalla sua postazione preme un taso su una pagina 
il sistema prende il nuovo numero e lo mostra a video
(puoi arrivare anche a 300 millisecondi con un p4 del cazzo)
 
 
gli dici come url
 
http://192.168.0.1/bilancia.php?bil=1
 
questo lo inserisce nel DB
 
update
Update contatore+1 where bilancia = $_GET[bil]
// o se vuoi insert if not exixt
 
vedi.php
select * from bilncie ;
while(
echo '[{"bil":"'.$row['BI'].'","contatore":"'.$row['nm'].'"}]';
}
 
se domani hai piu di una bilancia fai n code
 
 
probabilmente il pulsante ha una get ma non attende risposta se l'evento 
alla sua pressione e' avveuto o meno cioe fa una chiamata
e non gli interessa nulla se va a buon fine o meno
 
se 1 pc = 1 bilancia fai ancora prima ma hai i costi per 4
 
 
 
 
 
 
 
 
 

 eliminacode in versione web in lan.
 
tempo fa ho assistito alla presentazione di questo sistema
 
http://www.uqido.com/
 
 
magari a volte non serve reinventare la ruota...
 
ciao
 
 
 
-- 
AAAAAAAA American Association Against Acronym Abuse And Also Ambiguity

 magari a volte non serve reinventare la ruota...
 
Posso pure concordare con te, ma non decido io.
E' solo un amico che mi ha chiesto un parere (lui coordina il
progetto, per cui deciderà come fare).
 
Ciao

 (puoi arrivare anche a 300 millisecondi con un p4 del cazzo)
 
Non sono molto ferrato con AJAX, dovrò un attimo documentarmi per
seguire il tuo consiglio.
 
Mi pare che tu dia per scontato l'utilizzo di mysql, giusto ?

 Mi pare che tu dia per scontato l'utilizzo di mysql, giusto ?
 
si ma puoi usare un qualunque altro db
mysql perche fa coppia ma puoi usare anche sqlite stessa cosa
non fa una piega.
il db ti toglie molte rogne oltre che a darti delle cose in piu
i file lasciali perdere usa solo il db