Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 26-03-2009, 22.09.00   #1
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Eseguire in automatico script PHP

Sto scrivendo un'applicazione in PHP per un sito, c'è una tabella nel db che mantiene traccia di alcuni appuntamenti ai quali ci si può prenotare.

Bene, dovrei scrivere una funzione, da eseguire una volta al giorno, che acceda a tale tabella e cancelli gli appuntamenti scaduti. Semplice da realizzare una pagina che faccia una cosa simile, ma vorrei non dover accedere manualmente una volta al giorno a tale pagina.

Ho chiesto all'hoster se è possibile utilizzare Cronotab che mi risolverebbe il problema, la riposta è stata: i cronojob sul profilo entry sono disabilitati, ma sono abilitati sul profilo professional. Quindi in teoria servirebbe un upgrade del profilo.

Secondo voi, dire che i cronojob sono disabilitati vuol dire che è disabilitata una loro interfaccia che mi permetterebbe di gestire queste cose, oppure che non funzionerebbe neanche un programma che installo io?
Non lo chiedo a loro perché di sicuro mi risponderebbero che non c'è altro modo se non passando al profilo professional, anche se ciò non fosse vero.

In caso sia effettivamente indispensabile passare al profilo professional per usare i cronojob, posso risolvere il mio problema in un modeo diverso?
Alhazred non è collegato   Rispondi citando
Vecchio 28-03-2009, 14.31.12   #2
UG0_BOSS
Young Promise
 
Registrato: 04-02-2006
Messaggi: 2.114
UG0_BOSS promette bene
Forse il modo più semplice per farlo senza ricorrere ai cronjob è quello di eseguire la pulizia ad ogni accesso di qualsiasi utente, tenendone traccia tramite un file per evitare che venga ripetuta più di una volta.
Mi spiego meglio: ti crei una funzione, per esempio pulisci_tabella, che esegua la pulizia e tramite la funzione touch aggiorni la data di accesso ad un file che puoi chiamare a piacere (tipo last_cleanup).
Poi, nella pagina principale del programma aggiungi una linea di codice del tipo:
[php]
if(fileatime('last_cleanup') < (time() - 86400)) pulisci_tabella();
[/php]
In questo modo la tabella viene pulita al massimo una volta ogni 24 ore (86.400 secondi) e non hai rallentamenti nello script se non i pochi millisecondi necessari ad accedere al file sull'hard disk.
UG0_BOSS non è collegato   Rispondi citando
Vecchio 28-03-2009, 15.30.48   #3
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Grazie, stavo pensando di far avviare le operazioni sul db appena qualcuno avesse visitato una determinata pagina, in particolare quella che dovrebbe mostrare i dati aggiornati, ma pensando che l'operazione sarebbe stata effettuata ripetutamente e dalla seconda in poi senza motivo pensavo di abbandonare l'idea.
Adesso che mi hai detto questa cosa però proverò a fare come dici tu
Alhazred non è collegato   Rispondi citando
Vecchio 02-04-2009, 21.27.15   #4
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Ho provato la soluzione che mi hai proposto, ma ha un comportamento strano.
Il codice che ho usato è questo
Codice:
if(fileatime("..".DS."accesso".DS."cleanup.txt") < (time() - 86400)) {
	if(pulisci_prestazioni($db)) {
		touch("..".DS."accesso".DS."cleanup.txt");
	}
}
Mi loggo all'applicazione come amministratore, accedo alla pagina con questo codice e viene eseguita la funzione pulisci_prestazioni(), vado in un'altra pagina, dopo un po' torno su quella col codice e ok, la pulizia non viene eseguita.
Faccio il logout e mi riloggo con l'account di un utente, vado sulla pagina dell'utente in cui è presente questo codice e la funzione pulisci_prestazioni() viene eseguita di nuovo, anche se sono passati 2 minuti da quando è stato effettuato l'accesso al file dal codice presente sulla pagina dell'amministratore.

Sembra come se l'accesso dipenda da qualcosa legato alla sessione piuttosto che all'ora di accesso al file.
Dove può essere l'inghippo?
Alhazred non è collegato   Rispondi citando
Vecchio 04-04-2009, 13.56.40   #5
UG0_BOSS
Young Promise
 
Registrato: 04-02-2006
Messaggi: 2.114
UG0_BOSS promette bene
Il codice sembra corretto. Prova a fare un po' di debug, per esempio controllando che la data di accesso del file venga effettivamente modificata
UG0_BOSS non è collegato   Rispondi citando
Vecchio 10-04-2009, 20.07.20   #6
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Mah, pare che stia funzionando a dovere.
Forse quando ho notato il problema avevo aperto il file senza pensarci ed è cambiato l'orario d'accesso facendomi credere che ad accedere fosse stata la funzione touch.
Alhazred non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Script per il backup automatico boyashi Software applicativo 3 15-10-2008 09.08.13
run script php uluzzu Programmazione 9 17-07-2006 18.23.23
[LINUX] Eseguire script PHP con Apache Downloader Linux e altri Sistemi Operativi 3 16-11-2005 17.09.09
[OK] Eseguire il codice php senza un server Enrico204 Software applicativo 4 28-10-2005 17.24.26
PopUp Automatico in PHP gionny Programmazione 0 03-02-2005 23.20.11

Orario GMT +2. Ora sono le: 12.14.17.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.