Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2023
    Messaggi
    17

    Aggiornare in background a tempo pagina php che preleva file json da internet e me lo salva in file txt

    Buon anno a tutti.

    Leggendo (scopiazzando) in vari siti sono riuscito a creare questo codice che mi consente di prelevare da Open-Meteo il file json, con le previsioni per tre giorni, e mi registra un file txt che poi importo su Arduino.
    Le mie competenze in questo campo sono giurassiche, per cui richiedo anche informazioni.
    La pagina è in php.

    Problema 1
    Deve lavorare in background senza l’intervento umano.

    Problema 2
    Deve aggiornarsi ogni -tot- minuti per evitare che faccia troppe richieste al sito in questione, altrimenti mi blocca la consegna dei dati.

    NB - L’accesso al file è libero, non ci sono API o password particolari.

    Ho bisogno di integrare il codice seguente che funziona bene con l’intervento umano usando il reload -forzato- della pagina, ma questo deve lavorare (aggiornare) in piena autonomia in background.

    Inoltre ho alcune domande da farvi per capire come lavora il file.

    Un file php di questo tipo lavora solo quando abbiamo una finestra aperta nel browser oppure si carica con un loop infinito anche quando è chiuso il browser?


    Se metto uno sleep(tot sec); perché non mi aggiorna la stampa a video?
    Uno sleep(tot sec); blocca realmente le richieste?

    Si può usare un metodo (tipo WordPress vedi aggiornamento plugins) per aggiornare la pagina ogni tot tempo (credo che ci voglia un Cron, ma non saprei proprio implementarlo)?

    Grazie in anticipo.

    codice:
    <?php
         $curl_handle=curl_init();
         curl_setopt($curl_handle, CURLOPT_URL,'https://api.open-meteo.com/v1/forecast?latitude=45.3982&longitude=8.9168&current=temperature_2m,relative_humidity_2m,apparent_temperature,weather_code,pressure_msl,surface_pressure,wind_speed_10m,wind_direction_10m&hourly=temperature_2m,relative_humidity_2m,weather_code&timezone=auto&forecast_days=3');
         curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, "GET");
         curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
         curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
         $query = curl_exec($curl_handle);
         $data = json_decode($query, true);
         $all_data = $query;
    
         echo $all_data;
         curl_close($curl_handle);
         if (file_exists($filename0)) { 
              // Non fare nulla 
          } else { 
              $fp = fopen('data_2.txt', 'w');
              fwrite($fp, $all_data,);
              fclose($fp); 
          }
    ?>
    Ultima modifica di patdepri; 04-01-2024 a 12:33

  2. #2
    Utilizza un sistema di scheduling come cronjob per eseguire il tuo codice in background ad intervalli definiti.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2023
    Messaggi
    17
    Scusa per i ringraziamenti tardivi. Ho cercato di fare questo in modi diversi, ma poi ho dovuto per forza attivare il Cron.

    Grazie ancora per il consiglio

  4. #4
    Ho realizzato lo stesso servizio e ho affrontato lo stesso problema
    Ho delegato tutto tramite task sul server ogni 30 minuti; che è il tempo minimo offertomi.
    Io nella vita ho visto cose che voi astemi neanche potete immaginare.

Tag per questa discussione

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.