Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    5

    Eseguire uno script php solo una volta al giorno

    Ciao.
    Sto cercando di integrare uno script php con wordpress (come plugin) , questo è lo script:
    Codice PHP:
    <?php
    /*
    Plugin Name: checkOnline Status
    Version: 0.1
    */

    add_action'cO_cron_hook''CheckRemoteService' );

    if( !
    wp_next_scheduled'cO_cron_hook' ) ) {
    wp_schedule_eventtime(), 'daily''cO_cron_hook' );
    }

    register_deactivation_hook__FILE__'bl_deactivate' );

    function 
    bl_deactivate() {
    $timestamp wp_next_scheduled'cO_cron_hook' );
    wp_unschedule_event($timestamp'cO_cron_hook' );
    }

    function 
    CheckRemoteService($atts) {
    extract(shortcode_atts(array(
       
    'url' => 'http://',
       
    'cache' => '600'// 60*10 (10 minutes)
       
    'online' => 'Online'// Custom online msg
       
    'offline' => 'Offline' // Custom online msg
    ), $atts));

    $CachedStatus 'cstatus_' $url;
    $cachedposts get_transient($CachedStatus);
    if (
    $cachedposts !== false) {
    return 
    $cachedposts;
    } else {

    // Sometimes its best to change to a custom agent message
    // so you know where requests are coming from.

    $agent "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)";
    $ch curl_init();
     
    curl_setopt ($chCURLOPT_URL,$url );
     
    curl_setopt($chCURLOPT_USERAGENT$agent);
     
    curl_setopt ($chCURLOPT_RETURNTRANSFER1);
     
    curl_setopt ($ch,CURLOPT_VERBOSE,false);
     
    curl_setopt($chCURLOPT_TIMEOUT5);
     
    curl_setopt($chCURLOPT_NOBODY1);
     
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEERFALSE);
     
    curl_setopt($ch,CURLOPT_SSLVERSION,3);
     
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOSTFALSE);
     
    curl_exec($ch);
       
    $httpcode curl_getinfo($chCURLINFO_HTTP_CODE);
       
    curl_close($ch);
       if(
    $httpcode >= 200 && $httpcode 400) {
        return 
    $online;
        } else {
        return 
    $offline;
        }

     
    set_transient($CachedStatus$return$cache); 
    return 
    $return;
    }
    }
    add_shortcode('checkmyurl','CheckRemoteService');

    ?>
    Questo script mi permette di ottenere lo status di un url attraverso l'uso degli shortcodes di wordpress. Ho aggiunto anche la cronologia di wordpress. Il problema è che devo mostrare lo status di 50 siti ma la pagina impiega molto per caricarsi. Io pensavo che con la cronologia l'esecuzione della funzione venisse bloccata ed eseguita una volta sola. Invece lo script viene eseguito ogni volta che visito o ricarico la pagina con gli shotcodes. Praticamente vorrei che venissero mostrati solo i dati aggiornati dalla cronologia. Come posso fare ?
    Grazie.

  2. #2
    salva nel database, o da qualche parte, l'ultima volta che è stato caricato lo script.
    Poi metti un bell if, e verifichi che siano passate almeno 24 ore da quando è stato caricato lo script, e in tal caso lo fai caricare!!

  3. #3
    o fai come ha detto elmapomap oppure usi le crontab per programmare l'esecuzione di uno script.. se non hai il database puoi anche usare un file txt

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    5
    Ho fatto un po di ricerche e sono incappato negli xml. Praticamente quello che faccio è :
    - in un primo file php inserisco lo script per creare un documento xml poi creo una variabile legata all'esecuzione della funzione per controllare lo status per ogni sito , il risultato viene inserito nel file xml che ha una struttura di questo tipo :
    <xml>
    <sites>
    <site1>risultato funzione per sito1</site1>
    <site2>risultato funzione per sito2</site2>
    ...
    </sites>
    </xml>

    Poi questo file .php lo faccio eseguire dalla cron di wordpress.

    - in un secondo file creo la funzione che mi permette di ottenere i valori per ogni sito e la lego a uno shotcode di wordpress.

    Il file xml viene creato correttamente e anche gli shortcode funzionano ma i risultati vengono mostrati su un unica linea. Pensavo che il risultato venisse inserito nel punto in cui metto lo shortcode (che è nella forma [checkstatus name = "site1"]). Il problema è che devo inserire questi risultati in una tabella con altri dati mentre ora li mostra in alto su una sola riga come se fossero bloccati li. Per ottenere i dati dal xml ho usato simplexml.
    Ho sbagliato qualcosa io o è una qualche limitazione del xml ?
    Grazie.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.