Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

demone in PHP

87 views
Skip to first unread message

Hum

unread,
Jan 19, 2008, 6:47:32 AM1/19/08
to
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

Francesco F

unread,
Jan 19, 2008, 8:09:21 AM1/19/08
to
Hum wrote:
> 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.
>

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

Hum

unread,
Jan 19, 2008, 8:48:56 AM1/19/08
to
Intanto grazie della risposta.
Il motivo per cui penso ad un demone invece che a qualcosa attivato con
crontab è per due motivi:
1) Il programma deve anche poter ricevere e processare in tempo reale dei
comandi/messaggi che gli arrivano in modo asincrono da periferiche esterne
tramite porte seriali etc.
2) Vorrei poter canalizzare verso il demone i comandi che si possono operare
da pagine web ed eseguirli in tempo reale (questi includono anche comandi
che richiedono dialogo con le perifieriche seriali etc.).
Su questo punto in effetti ho qualche perplessità perchè induce una
complessità che sarebbe bypassabile se si evitasse questo giro e da PHP di
pagina web si accedesse direttamente alle periferiche.
Il problema che vedo è che se non si canalizza tramite demone il dialogo con
le perifiche si potrebbe verificare un conflitto tra il dialogo su seriale
svolto dal demone con quello generato da pagina web. In pratica vedrei il
demone come supervisore di tutto il traffico. Bho...

Avrei poi dei dubbi sull'adeguatezza del PHP per questo tipo di
applicazione. Di fatto ho cercato su web degli esempi in cui vi fosse un uso
del linguaggio per questo tipo di applicazioni ma non non ho trovato
granchè.

Ciao
Hum


"Francesco F" <firefly...@yahoo.com> ha scritto nel messaggio
news:4Emkj.31$hs1...@nntpserver.swip.net...

Alessandro Pellizzari

unread,
Jan 19, 2008, 9:14:29 AM1/19/08
to
Il Sat, 19 Jan 2008 14:48:56 +0100, Hum ha scritto:

> Avrei poi dei dubbi sull'adeguatezza del PHP per questo tipo di
> applicazione. Di fatto ho cercato su web degli esempi in cui vi fosse un
> uso del linguaggio per questo tipo di applicazioni ma non non ho trovato
> 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.

Andrea D'Amore

unread,
Jan 19, 2008, 9:54:50 AM1/19/08
to
In article <4791ffc9$0$4788$4faf...@reader4.news.tin.it>,
"Hum" <hum_remo...@libero.it> wrote:

> 1) Il programma deve anche poter ricevere e processare in tempo reale dei
> comandi/messaggi che gli arrivano in modo asincrono da periferiche esterne
> tramite porte seriali etc.
> 2) Vorrei poter canalizzare verso il demone i comandi che si possono operare
> da pagine web ed eseguirli in tempo reale (questi includono anche comandi
> 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.

iuz

unread,
Jan 19, 2008, 1:29:35 PM1/19/08
to
On Sat, 19 Jan 2008 12:47:32 +0100, Hum wrote:

> 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

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

Alex

unread,
Jan 20, 2008, 8:43:53 AM1/20/08
to
> 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.
>

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

Alessandro Pellizzari

unread,
Jan 21, 2008, 1:10:27 AM1/21/08
to

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.

0 new messages