Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Far proseguire questo script

    Ciao. Premetto che di PHP ci azzecco poco, abitualmente uso ASP e ASP.NET

    Lo script che posto qui di seguito è il sorgente di una pagina che viene chiamata ciclicamente da un sensore per la misurazione di polveri sottili.
    Il sensore chiama l'URL di questa pagina e gli invia un flusso dati.

    codice:
    <?PHP
            $retVal = json_decode(file_get_contents("php://input"),true);
            $fp = fopen("../public/SensorePM/".$retVal["esp8266id"].".txt","c");
            fputs($fp,"#1a#" . date("d.m.y H:i",time()) . "#1b#");
            fputs($fp,"#2a#" . $retVal["esp8266id"]. "#2b#");
            fputs ($fp,"#3a#" . $retVal["software_version"] . "#3b#");
            foreach ($retVal["sensordatavalues"] as $sensordatavalues) {
                    $values[$sensordatavalues["value_type"]] = $sensordatavalues["value"];
            }
            $line = var_export($values,true);
            fputs($fp,$line);
            fclose($fp);
    ?>

    In parole povere chiama: www.miosito.com/ReadPM.php
    ed invia dei dati in questa struttura

    #1a#15.03.20 09:49#1b##2a#12668122#2b##3a#NRZ-2020-129#3b#array (
    'SDS_P1' => '3.72',
    'SDS_P2' => '3.05',
    'temperature' => '36.10',
    'humidity' => '25.80',
    'samples' => '4353291',
    'min_micro' => '33',
    'max_micro' => '20391',
    'signal' => '-68',
    )))
    )',
    )6',
    )

    Funziona tutto e ricevo i dati dal sensore e il file .txt viene salvato sul server.

    Ora il problema è che subito dopo la ricezione di questi dati, io li devo manipolare, correggere, archiviare ecc.
    Per me la cosa più saggia sarebbe quella di fare un redirect ad una mia pagina (in ASP) che legge il file e si adopera alla gestione di questi dati.

    Il GROSSO problema è che qualsiasi cosa aggiunga al file php non me lo esegue. Sembra che si preoccupi unicamente dell'ingresso dei flusso dati e, alla fine salva il file e basta.
    Esiste un modo per fargli fare un redirect?

  2. #2
    hai provato ad aggiungere, dopo fclose($fp); questo: ?

    Codice PHP:

    header
    ("location:url_del_sito_dove_vuoi_essere_reindirizzato"); 
    aquatimer2000

  3. #3
    Certo che ho provato ma non va da nessuna parte

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Scusa, ma hai detto che lo script è chiamato dal sensore? in che modo?

  5. #5
    È questo il punto, non lo so.
    Credo sia un flusso in stream ma non ne sono sicuro.

    Mi potete proporre un piccolo script PHP che intercetti i nomi dei parametri in arrivo sia in GET che in POST

    Saputo questo potrei anche gestire tutto in altro linguaggio.

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Non credo che ci siano parametri GET/POST. Nella prima istruzione usa lo stream php://input per leggere i dati dal body della richiesta (che è un json) e lo trasforma in array.

    Il fatto che non riesci a fare il redirect, secondo me, dipende dal fatto che chi chiama lo script poi non interpreta l'header di risposta.

    Quindi:
    1. O cambi l'indirizzo a cui fa riferimento il sensore verso la tua app asp
    2. Fai le modifiche/elaborazioni direttamente in php
    3. Usi lo script php solo per "rilanciare" i dati in ingresso verso la tua pagina asp. Puoi usare curl (o anche file_get_contents, con un context) per chiamare la tua pagina

  7. #7
    tramite ASP ho chiesto:
    - In quale modo arrivano i dati (get o post)
    - Tutti i parametri GET
    - Tutti i parametri POST

    La risposta:
    - Modo: POST
    - Parametri GET (nessuno)
    - Parametri POST (nessuno)

    Come dici giustamente te:
    O intercetto lo stream tramite ASP
    O Invece di salvare il file ridirigo ad altro file


    In effetti è circa quello che sto facendo ora per far comunque funzionare il tutto.

    Il sensore mi da la possibilità di due chiamate esterne
    Dalla prima chiamo il file PHP che crea il TXT
    Dalla seconda leggo il TXT ed opero di conseguenza.

    Volevo fare tutto con una sola chiamata.

  8. #8
    qualcosa del genere, alla fine del tuo script php, la puoi provare ?!
    o dico una sciocchezza?!

    Codice PHP:

        $option 
    = [


            
    'http' => [


                
    'hedaer' => "Content-type: application/x-www-form-urlencode\r\n",
                
    'method' => 'POST',
                
    'content' => http_build_query($tuoJson),


            ]


        ];


        
    $context stream_context_create($option);


        
    $send fopen('tuapaginaasp''r'false$context); 
    aquatimer2000

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.