2009-12-30 17 views
6

C'è un modo semplice per fare in modo che uno script php esegua qualche html in determinate ore del giorno?Script PHP da eseguire in determinati orari

Ad esempio, ho nella mia home page un'intestazione e in determinati momenti voglio poter aggiungere qualcosa proprio sotto l'intestazione, in questo caso un iframe.

So che tutti hanno parlato di cron jobs ma come funzionerebbe? c'è anche un'alternativa? Non è disponibile su tutti gli hosting

+0

Mi dispiace, come fa uno script 'eseguire qualche html'? –

+2

@ Ben penso che voglia dire "generare" un po 'di html. –

risposta

11

L'idea di cron e lavori elaborati sembra essere in contrasto con quello che stai effettivamente cercando di fare. Se vuoi che qualcosa venga visualizzato (un iframe in questo caso) solo in determinati orari, puoi semplicemente controllare l'orario del server durante ogni richiesta e scegliere di visualizzarlo se ti trovi entro un determinato periodo di tempo.

Qualcosa di simile produce lo stesso effetto di un cron job, con più granularità, controllando l'ora nel momento esatto in cui viene effettuata la richiesta.

<!-- Your Header here --> 

<?php 
$hour = date('G'); // 0 .. 23 

// Show our iframe between 9am and 5pm 
if ($hour >= 9 && $hour <= 17) { ?> 
    <iframe .... ></iframe> 
<?php } ?> 

È possibile espandere l'istruzione condizionale per mostrare l'iframe più volte al giorno, o il vostro assegno di script qualsiasi condizione esterna stai cercando di usare per governare la visualizzazione del vostro iframe.

Aggiornamento: volte supplementari o tipi di confronti potrebbero essere specificati attraverso qualcosa di simile

<?php 
$hour = date('G'); 
$day = date('N'); // 1..7 for Monday to Sunday 

if (($hour >= 5 && $hour <= 7) // 5am - 7am 
|| ($hour >= 10 && $hour <= 12) // 10am - 12 noon 
|| ($hour >= 15 && $hour <= 19) // 3pm - 7pm 
|| ($day == 5)     // Friday 
) { ?> 
    <iframe...></iframe> 
<?php } ?> 

L'idea di periodicamente aggiungere/rimuovere l'iframe da sotto l'intestazione con un cron lato server/task scheduler il lavoro è molto più complesso del semplice visualizzarlo condizionatamente durante ogni richiesta.

Anche se si dispone di un task specifico da eseguire, ad esempio un report generato periodicamente, il lavoro effettivo di visualizzazione dei risultati solitamente non ricade sul task periodico. Lo script PHP responsabile per mostrare che iframe avrebbe ancora interrogato il database nel momento in cui viene fatta la richiesta per qualsiasi nuovo contenuto da mostrare, e lo visualizza se trovato, piuttosto che l'attività periodica in qualche modo modificando lo script per includere un iframe.

+0

Esattamente quello che stavo cercando, ma faccio solo front-end quindi sono ancora perso nell'aggiungere più volte nello scrip. –

2

Su sistemi Unix cron è la soluzione migliore.

6

Se si utilizza Linux, è possibile che si disponga di un cron job.

Se si utilizza Windows, utilizzare Utilità di pianificazione.

Se ci si trova in un ambiente ospitato, è necessario verificare se è consentito.

+3

Se nessuno dei due è consentito sull'host (v), è possibile scrivere uno script PHP da riga di comando che viene eseguito come un demone ed esegue gli script in momenti configurati. Un'ultima risorsa. –

+0

Oppure potresti creare un servizio web che lo attivi e chiamarlo da una casella che possiedi. – jeffa00

0

è possibile pianificare l'attività come cron job.

0

È possibile aggiungere uno script PHP al crontab per eseguire automaticamente lo script a intervalli definiti. Dalla riga di comando, inserisci crontab -e per aggiungere la voce al tuo crontab.

4

Quando non si dispone di accesso ai processi cron o alle attività pianificate sul server, è possibile utilizzare servizi online come http://pingability.com/ per inviare il proprio script a intervalli specificati. Non è perfetto, ma puoi creare una sorta di chiave segreta e codice che si assicura che lo script non venga eseguito più volte in un determinato periodo di tempo. Potrebbe sembrare un po 'hacky, ma l'ho usato su sistemi live per inviare e-mail quotidiane e funziona bene da oltre un anno.

+0

Ho provato, ma il collegamento sembra essere in calo –

+2

http://www.siteuptime.com/ e https://www.websitepulse.com/ sembrano offrire servizi identici. – sjobe

Problemi correlati