Entra

View Full Version : [PHP] Autorefresh anche senza accesso


Lim
01-02-2007, 08:19
Mi sto chiedendo se è possibile fare in modo che alcune pagine PHP vengano eseguite automaticamente sul server in modo che vadano ad aggiornare alcune tabelle di MySQL anche senza un accesso diretto da parte degli utenti. :help:

Una cosa del tipo che venga eseguita ad intervalli di tempo prestabiliti oppure che sia sempre in esecuzione come se fosse un vero e proprio programma attivo in background.

Mi sono spiegato bene? Spero di si... ;)

P.S. se con PHP non fosse possibile con cosa posso farlo?

andbin
01-02-2007, 08:35
Mi sto chiedendo se è possibile fare in modo che alcune pagine PHP vengano eseguite automaticamente sul server in modo che vadano ad aggiornare alcune tabelle di MySQL anche senza un accesso diretto da parte degli utenti. :help:

Una cosa del tipo che venga eseguita ad intervalli di tempo prestabiliti oppure che sia sempre in esecuzione come se fosse un vero e proprio programma attivo in background.Su un sistema linux potresti usare il 'cron' per avviare, a tempi prestabiliti, l'interprete PHP con uno script che vuoi. Ma nulla ti vieta di creare un programmino in un qualunque altro linguaggio tipo C, Perl, ecc.... che rimanga in esecuzione tutto il tempo e che faccia quello che ti serve.
La questione principale è solamente quanto controllo hai sulla macchina.

Lim
01-02-2007, 11:40
Su un sistema linux potresti usare il 'cron' per avviare, a tempi prestabiliti, l'interprete PHP con uno script che vuoi. Ma nulla ti vieta di creare un programmino in un qualunque altro linguaggio tipo C, Perl, ecc.... che rimanga in esecuzione tutto il tempo e che faccia quello che ti serve.
La questione principale è solamente quanto controllo hai sulla macchina.

Quello che ho in mente è di fare in modo che il programma PHP sia eseguito ad intervalli prestabiliti su un webserver, tipo quello di Aruba ecc...

Poix81
01-02-2007, 13:18
altrimenti puoi usare webcron

ciao ciao

Lim
10-02-2007, 14:24
Senza Webcron non è possibile?

Non ci sono alternative? In particolare vorrei fare in modo che dei dati contenuti in un database (MySQL) venissero aggiornati ad intervalli di tempo prestabiliti (ad esempio ogni 10 minuti).
Considerate che non risiede sul mio PC ma è ospitato da uno dei tantoi servizi di hosting...

Morfeo XP
11-02-2007, 18:33
E' possibile, se non sono troppo indiscreto, sapere qual'è il problema che intendi risolvere?

Lim
11-02-2007, 20:12
Non credo di poter essere + chiaro di cosi... :rolleyes:

il fatto è che avevo pensato di effettuare l'elaborazione sui dati contenuti nel DB solo quando viene effettuato il primo accesso alla home del sito e non ad intervalli di tempo prestabiliti, ma i calcoli potrebbero essere troppo complessi per essere forniti in tempi ragionevoli.
Ho fatto una prova sul webserver del mio PC ed ovviamente è scaduto il timeout (30 secondi) dedicato all'esecuzione degli script PHP.

Quello che vorrei fare è effettuare i calcoli, ad esempio, ogni ora, in modo che l'utente, quando vi accede, non deve attendere che essi siano elaborati, poichè sono già disponibili!!

E' un pò + chiaro adesso?

Morfeo XP
11-02-2007, 20:28
Scusami ma inizialmente avevo pensato ad altri problemi....
Sinceramente non ho idea per come risolvere il problema, ma l'unica cosa che mi viene in mente è di ottimizzare in qualche modo l'elaborazione... ma questo dipende dalla natura dei dati trattati e dal tipo di elaborazione che intendi eseguire.

Ad esempio se devi calcolare il totale delle fatture emesse da una azienda dal 2000 ad oggi, potresti calcolare il totale delle fatture del 2000 al 2006 (conservandolo da qualche parte, per le elaborazioni successive) e sommarlo al totale delle fatture del 2007...

Lim
11-03-2007, 09:17
Sono riuscito a trovare una soluzione elegante, ma purtroppo non funziona... :rolleyes:

Cercando nella rete ho trovato il pacchetto PHPJobScheduler. Purtroppo però la versione che ho provato non sembra funzionare sotto Windows, ma solo con Linux, suppongo che si appoggi sempre al cron di Linux. Infatti il pacchetto installato nel server non è altro che una raccolta di script PHP che consentono di gestire la pianificazione...

Avevo anche pensato di provare con il consiglio che mi ha dato AndBin, scrivere un programmino in C# che eseguisse lo script ad intervalli di tempo prestabiliti. Purtroppo non è possibile lanciare l'eseguibile C# perchè viola le politiche di sicurezza del server :muro: (chissà perchè, ma me l'aspettavo... ;) )

Consigli? :help: :help: :help:


Ammesso che si riesca a trovare il modo di aggirare il problema, ne sorgerebbe anche un altro: Come posso allungare i limiti di esecuzione di uno script su un server NON mio? (Aruba o simili...) Il limite dei 30 secondi non è sufficiente... Qualcuno sa qual'è il limite massimo?