Mysql
 sql >> Database >  >> RDS >> Mysql

pianifica automaticamente l'esecuzione di uno script php in un momento specifico

Hai 3 opzioni. Il mio consiglio:usa cron se puoi, guidato dall'utente se necessario e daemon come ultima risorsa.

(1) cron (come menzionato nei commenti)

cron è uno scheduler per sistemi Linux che eseguirà un lavoro da riga di comando sul tuo sistema. Accedi al tuo server tramite ssh, digita crontab -e e aggiungi una riga come questa:

4 5 * * * php /path/to/my/script.php

Questo eseguirebbe lo script alle 5:04 ogni giorno.

<?php
// /path/to/my/script.php

// Do something

Alcuni servizi di hosting consentono di inserire lavori cron con una GUI. Ci sono anche servizi cron esterni, che chiameranno un URL per te in momenti specifici.

(2) demone

Questa è l'opzione più avanzata e anche la meno affidabile:esegui uno script della riga di comando che contiene un ciclo infinito. Lo script quindi controlla periodicamente lo stato e risponde ad esso. Poiché è probabile che si arresti in modo anomalo dopo mesi di esecuzione, è necessario disporre di un secondo script per riavviarlo nel caso in cui lo faccia. Questo è un sacco di lavoro, ma è l'approccio più flessibile.

<?php



while (1) {   

  // fetch $last_exec_timestamp from database

  if ($last_exec_timestamp < time() + 86400) {
    // set last_exec_timestamp to now in database

    // do something
  }
  sleep(5);

}

3. guidato dall'utente

Se hai una discreta quantità di traffico sul tuo sito, puoi semplicemente includere un lavoro questo nel piè di pagina della tua pagina, quando non c'è più output. Assicurati che questo codice sia veloce o un utente sfortunato lo aspetterà.

<?php

// fetch $last_exec_timestamp from database

if ($last_exec_timestamp < time() + 86400) {
  // set last_exec_timestamp to now in database
  // do something
}

Esistono anche approcci più fantasiosi di "guidato dall'utente" che non ho testato personalmente in un altro overflow dello stack domanda .