Newsgroup: it.comp.www.php
Titolo: demone in PHP

Ciao,
cerco idee od esempi cui attingere su come realizzare un programma PHP che 
giri come demone su una macchina linux per raccogliere e monitorare alcumi 
parametri (tra cui dati che vengono raccolti tramite porte seriali) o per 
eseguire comandi che gli vengono passati.
I dati raccolti sono memorizzati in db mysql.
Il programma deve poter interagire con un'interfaccia web nel senso che da 
pagine web sarà possibile accedere ai dati raccolti e si potrà anche operare 
i suddetti comandi nei confronti del demone.
L'interazione web<->demone dovrebbe essere in tempo reale eventualmente 
tramite socket tcpip.
Qui sotto un riepilogo delle tematiche con la mia autovalutazione sulle mie 
conoscenze in materia:
Demone linux:
- struttura genrale del programma >>> (???)
- dialogo con sensori e periferiche tramite seriali >>> (???)
- acquisizione dati da I2C ed altro >>> (???)
- interazione con chiamate da pagine web in PHP per esecuzione comandi 
online (???)
- archiviazione dati in mysql >>> (OK)
- funzioni di amministrazione del demone /start/stop/offline/...) >>> (???)
Interfaccia Web Linux:
- Interfaccia di comando e ed interrogazione da pagine web >>> (OK)
- Accesso a DB, reporting in html, ecc. >>> (OK)
Come vedete ci sono diverse tematiche in gioco e per alcune sarei a posto su 
come realizzare la cosa.
Ciò nonostante mi piacerebbe poter partire da un "prelavorato" da adattare.
Qualcuno ha idea su dove eventualmente attingere a informazioni o ha delle 
dritte da dare?
Grazie e ciao,
Hum

 
Se il demone memorizza i dati rilevati su db, il processo web non 
interagisce con il demone ma con il db stesso.
Prima considerazione, ti conviene utilizzare un demone oppure avere un 
applicativo standalone che richiami in modo schedulato (tramite cron)? 
Pensi di interrogare le periferiche attraverso un polling continuo 
oppure ad eventi particolari?
Secondo me hai due diverse strade: la prima legata all'acquisizione dei 
dati (demone o schedule) la seconda la parte di visualizzazione dei 
risultati e la cfg del processo stesso che si occupa della raccolta dei 
medesimi.
 
My two cents,
	Francesco

 ha scritto nel messaggio 
news:4Emkj.31$hs1...@nntpserver.swip.net...


 granchè.
Anche io li ho, soprattutto perche` devi avere accesso diretto 
all'hardware (seriali e simili) e in grado di gestire piu` sorgenti 
contemporaneamente. Dovresti usare meccanismi come select() (non quella 
dell'SQL, quella della libc) o strutturare il tuo programma in modo 
parallelo (multiprocesso o multithread), e onestamente PHP (o qualsiasi 
altro linguaggio dinamico) ce lo vedo poco.
Prova a valutare C/C++ o D.
Al limite, se vuoi restare sul dinamico, Python.
L'interfaccia web invece la puoi fare benissimo in PHP, ti basta definire 
un protocollo di comunicazione tra PHP e il tuo daemon. Anche il normale 
HTTP un po' modificato, molto semplice da implementare, va benone.
Bye.

 che richiedono dialogo con le perifieriche seriali etc.).
Mah, spezza la soluzione in più programmi, un demone che programmi come 
vuoi tu (al limite anche bash scripting) dei cgi-bin per l'interazione 
utente-demone e la web application in php.
Divide et impera.

 Hum
qui trovi il codice per creare un piccolo demone in PHP..
http://php-faq.org/SimpleDaemon
tuttavia come ti hanno suggerito anche altri.. dovresti prendere in 
considerazione l'uso di un altro linguaggio per la parte delicata della 
tua applicazione.. anche se PHP sarebbe in grado di farlo.. e' meglio 
ripiegare su qualcosa di piu' adatto..
avendo solo i requisiti che hai postato io procederei cosi'..
creo un demone in C (o altro linguaggio) che gestisca l'acquisizione dei 
dati e l'inserimento degli stessi nel db (questo finira' anche negli 
script di init)..
creo una suite di comandi richiamabili da shell per effettuare le 
operazioni base necessarie..
creo un demone in C (o altro linguaggio) che risponda a richieste su una 
specifica porta e che esegua i comandi su richiesta, in questo modo puoi 
lanciare comandi semplicemente facendo richieste via rete interna o 
internet..
crei una interfaccia web in PHP che visualizzi i dati del DB e sia in 
grado di fare richieste al demone citato sopra..
in questo modo l'acquisizione dei dati, la gestione base, l'accesso ad i 
comandi di gestione e la parte web rimangono ben separati gli uni dagli 
altri..
e' un lavoro abbastanza lungo per una persona sola.. ma se parti bene in 
poco tempo te la puoi cavare..
-- 
www.iuz-lab.info

 
Scusami, ho un dubbio. Ma per linguaggio dinamico cosa intendi? non 
compilato?
grazie
Alessandro



Si`, piu` o meno.
Un linguaggio dinamico ti consente di avere tipizzazione piu` lasca, 
allocazione e deallocazione dinamica della memoria (e quindi garbage 
collection) e altre cose, per cui nel 95% dei casi ti serve una macchina 
virtuale sotto, che sia la JVM, l'interprete python o php-cli (per dirne 
tre).
Bye.