Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: Daemon in PHP

  1. #1

    Daemon in PHP

    Buongiorno a tutti,
    è il primo post che metto in un forum, e non sono molto pratica..comunque
    sto lavorando ad un progetto per la mia tesina d'esame e avrei bisogno di un aiuto
    purtroppo a scuola molti argomenti del php vengono tralasciati e sono poco esperta in materia,
    avrei bisogno di creare un demone in php che prenda il valore di un dato inviati da un dispositivo bluetooth ad una porta seriale del computer e che la memorizzi in una variabile.
    fino a qui diciamo che non sarebbe poi così complicato, se sapessi come diamine farlo!
    ora il mio problema principale è:
    è possibile utilizzare questa benedetta variabile in modo che compaia in una pagina php di un sito web in modo che si aggiorni costantemente? si può fare direttamente dal daemon?
    per dubbi chiedetemi pure,
    grazie dell'attenzione..mancano pochi giorni e sono davvero in alto mare!

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Come demone, credo che potresti fare uno script php con un loop infinito. Facendo attenzione a settare a 0 il tempo massimo di esecuzione degli script php.
    Di solito questo limite è di 30 secondi, passati i quali lo script termina in ogni caso.
    Codice PHP:
    <?php
    set_time_limit
    (0);
    while(
    1){
        
    //leggo dalla seriale;
    }
    ?>
    Fatto questo, lo dai in pasto all'interprete php...ed il tuo demone è fatto.
    Per la lettura della seriale, mi pare ci fosse un progetto php-serial... che però non mi pare funzionasse bene su windows ma su *nix.

    Venendo al tuo problema principale, la risposta è ni.
    La cosa più semplice da realizzare è qualla di appoggiarsi ad un DB o un file (es xml):
    Il tuo demone legge dalla seriale e inserisce il valore nel DB (oppure aggiorna un file xml).
    Il tuo script php del sito, quando richiamato, si collega al db (o legge il file xml) e stampa il valore. In questo caso, potresti anche pensare di fare il demone in un altro linguaggio che supporti meglio la porta seriale (Java, C, etc)

    Se vuoi fare qualcosa di più complicato, allora dovresti aggiungere al tuo demone un thread che sta in ascolto su una porta ed invia il valore letto a chi si connette.
    La pagina php del sito, si connette tramite socket al demone (thread) che gli passa il valore salvato nella variabile.

  3. #3
    Originariamente inviato da boots
    Come demone, credo che potresti fare uno script php con un loop infinito. Facendo attenzione a settare a 0 il tempo massimo di esecuzione degli script php.
    Di solito questo limite è di 30 secondi, passati i quali lo script termina in ogni caso.
    Codice PHP:
    <?php
    set_time_limit
    (0);
    while(
    1){
        
    //leggo dalla seriale;
    }
    ?>
    Fatto questo, lo dai in pasto all'interprete php...ed il tuo demone è fatto.
    Per la lettura della seriale, mi pare ci fosse un progetto php-serial... che però non mi pare funzionasse bene su windows ma su *nix.

    Venendo al tuo problema principale, la risposta è ni.
    La cosa più semplice da realizzare è qualla di appoggiarsi ad un DB o un file (es xml):
    Il tuo demone legge dalla seriale e inserisce il valore nel DB (oppure aggiorna un file xml).
    Il tuo script php del sito, quando richiamato, si collega al db (o legge il file xml) e stampa il valore. In questo caso, potresti anche pensare di fare il demone in un altro linguaggio che supporti meglio la porta seriale (Java, C, etc)

    Se vuoi fare qualcosa di più complicato, allora dovresti aggiungere al tuo demone un thread che sta in ascolto su una porta ed invia il valore letto a chi si connette.
    La pagina php del sito, si connette tramite socket al demone (thread) che gli passa il valore salvato nella variabile.
    intanto grazie per aver risposto, avendo poco tempo una cosa più semplice possibile mi basterebbe, ho guardato molti tutorial per creare demoni e per leggere da seriale e ho creato questo:
    Codice PHP:
    <?php 
    require_once "System/Daemon.php";                  
    include 
    "php_serial.class.php";  

    $serial = new phpSerial$serial->deviceSet("COM3"); 
    $serial->confBaudRate(9600); $serial->confParity("none");
    $serial->confCharacterLength(8); $serial->confStopBits(1); $serial->confFlowControl("none");  

    System_Daemon::setOption("appName""mydaemon");  System_Daemon::start();                                

    while(
    true)     {         
    $serial->deviceOpen();     
    $posti $serial->readPort();       
    //invio del dato ad una pagina php       
    sleep(5);       
    $serial->deviceClose();    

    ?>
    credi possa funzionare? e soprattutto su un win8? (non ho a disposizione un pc dove installare una versione di *nix e il pc non è mio)
    inoltre stavo pensando: se io utilizzo questo file e lo importo nel file della mia pagina php del sito web posso utilizzare la variabile $posti e stamparla?pensi possa essere fattibile?

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Guarda, se la libreria è questa:

    https://code.google.com/p/php-serial/

    Allora non credo ti funzioni su Win8:
    codice:
    Once the connection is opened, it can send data to the serial port, and read answers (reading is only implemented for Linux or OSX).

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Girando un po' ho trovato questo

    http://www.php.net/manual/en/functio...attr.php#51509

    Cmq la cosa più semplice da fare è:
    1 Il Demone (come quello che hai postato) che però salva il valore letto nel db/file
    2 La pagina php si connette al db e stampa a video la variabile
    (Se vuoi che la pagina si aggiorni automaticamente, puoi usare js+ajax per farla ricaricare ogni tot secondi)

  6. #6
    Originariamente inviato da boots
    Guarda, se la libreria è questa:

    https://code.google.com/p/php-serial/

    Allora non credo ti funzioni su Win8:
    codice:
    Once the connection is opened, it can send data to the serial port, and read answers (reading is only implemented for Linux or OSX).
    mi sto seriamente convertendo all'open source..win8 ha abbastanza rotto le palle, anche con la configurazione del bluetooth.. -_-" sembra fatto apposta a rendere difficile la vita per qualsiasi cosa.
    Quindi se anche senza utilizzare la libreria del demone, solo con un ciclo infinito, io non riesco comunque a leggere da seriale in php a questo punto...e se usassi il C? posso interfacciare una pagina C con una php del sito web? non ho mai interlacciato due linguaggi differenti sinceramente a parte php e html..

  7. #7
    Originariamente inviato da boots
    Girando un po' ho trovato questo

    http://www.php.net/manual/en/functio...attr.php#51509

    Cmq la cosa più semplice da fare è:
    1 Il Demone (come quello che hai postato) che però salva il valore letto nel db/file
    2 La pagina php si connette al db e stampa a video la variabile
    (Se vuoi che la pagina si aggiorni automaticamente, puoi usare js+ajax per farla ricaricare ogni tot secondi)
    ciao! scusami, ho visto solo adesso che avevi risposto mentre scirvevo l'altro messaggio,
    avresti voglia e tempo di dirmi la funzione per salvare il valore della variabile su un file xml? sto studiando come una forsennata e non ho tempo di mettermi a guardare, altrimenti mi arrangio.
    è per trovare più in fretta la soluzione.
    comunque appena riesco ad interfacciare il BT (altro grosso problema) faccio girare il demone per vedere se funziona.

  8. #8
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Per l'xml puoi usare DOMDocument

    Creati un file xml del tipo

    codice:
    <?xml version="1.0"?>
    <var xml:id="posti">0</var>
    poi nel demone metti
    Codice PHP:
    $xml = new DOMDocument();
    while (
    1){

        
    $xml->load('/xml/data.xml');
        
    $node $xml->getElementById('posti') ;
        if (
    $node) {
           
    $node->nodeValue // il valore letto dalla porta;
           
    $xml->save("/xml/data.xml");
       }

    Nella pagina del sito fai la stessa cosa, stampand a video $node->nodeValue

  9. #9
    Originariamente inviato da boots
    Per l'xml puoi usare DOMDocument

    Creati un file xml del tipo

    codice:
    <?xml version="1.0"?>
    <var xml:id="posti">0</var>
    poi nel demone metti
    Codice PHP:
    $xml = new DOMDocument();
    while (
    1){

        
    $xml->load('/xml/data.xml');
        
    $node $xml->getElementById('posti') ;
        if (
    $node) {
           
    $node->nodeValue // il valore letto dalla porta;
           
    $xml->save("/xml/data.xml");
       }

    Nella pagina del sito fai la stessa cosa, stampand a video $node->nodeValue
    ti ringrazio infinitamente..oggi mi metto

  10. #10
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Pensandoci meglio, credo che così sia meglio:

    Codice PHP:
    $xml = new DOMDocument();
    $xml->load('/xml/data.xml');
    $node $xml->getElementById('posti') ;
    if(!
    $node) die('Errore lettura file')
    while (
    1){    
        
    $node->nodeValue // il valore letto dalla porta;
        
    $xml->save('/xml/data.xml');


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.