- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Mysql + PHP: Update $valore-1 ad ogni giorno che passa
-
Ciao Kian,
Quello è solo un metodo alternativo per utilizzare i cron, puoi usare servizi esterni come ti ho detto prima che si incaricano di avviare lo script in certi momenti precisi della giornata.
-
Uhm se non c'è altro metodo potresti dirmi perchè non funziona?
File spoiler.php
[php] 01 * * * * /usr/local/bin/php wwwmiositoit/script.php[/php]Da questo file vado a richiamare script.php. Il problema è che prima di tutto non funziona (dovrebbe eseguire lo script ogni minuto) e in spoiler.php mi da errore di sintassi vicino a "*".
-
Attento che le variabili globali (esempio $_SERVER) non esistono quando lo script è lanciato da cron, se lo script usa queste variabili hai problemi...
-
No, lo script fa un UPDATE nel database e niente altro
-
Posta l'errore completo...
-
Parse error: syntax error, unexpected '*' in /web/htdocs/wwwmiositoit/home/cartella/spoiler.php on line 3Generato da questo
[php]<?
*/1 * * * * /usr/lib/php /home/web/wwwmiositoit/cartella/automation_script.php
?>[/php]P.S. Ovviamente nel link wwwmiositoit ci sono i due punti. Scrivo cosi perchè non posso inserire link attivo... è ora che mi faccio premium.
-
Poi postare la prima parte di codice del file spoiler.php?
-
Non c'è una prima parte. Questo è tutto quello che c'è in spoiler.php
[PHP] <?
*/1 * * * * /usr/lib/php /home/web/wwwmiositoit/cartella/automation_script.php
?> [/PHP]
-
Vedi che quel codice dovrebbe servire per impsotare il CRON, il cron no si imposta da php, ma è una funziona che ti permette il server. Devi avere i permessi di impostare un cron sul tuo server tramite il pannello per poterlo creare, altrimenti devi usare servizi esterni
-
Eh ma purtroppo non ho accesso al demone (credo si chiami cosi) cron. Ma io mi domando... in tutti i cms o forum c'è la data e tutto il database si aggiorna in base alla variabile temporale. Che sistema utilizzano? Non certo il cron visto che spesso è bloccato dal provider.
-
Fanno un controllo su ogni pagina, di quando è stato lanciato lo script l'ultima volta, sistema che utilizza più risorse del server...
-
Si ma tale controllo è comunque automatico immagino. Per fare il controllo o qualcuno visualizza la pagina o automatizza la sua esecuzione. Questo automatismo è sempre cron o sbaglio?
-
Viene fatto sulle pagine, quando un visitatore entra in una pagina del cms lo script esegue anche questo controllo
-
Quindi se non posso utilizzare cron (sto su Aruba e credo lo blocchi) o mi impegno ogni giorno a refreshare lo script o devo rinunciare. Giusto?
-
Usi cron esterni... che si occupino loro di visitare una volta al giorno(o più volte) la tua pagina
-
Ne conosci qualcuno? Sai conosco cron da ieri
-
Basta cercare free cron su google
Se ne trova parecchi...
-
Ok, ho trovato un servizio che pare essere molto valido. Adesso vorrei tornare un attimo sullo script perchè ho un problema. Farò degli esempi per cercare di farmi capire.
Tabella ---> scadenze_clienti
--Nome--Durata--
Cliente1----90-----
Cliente2----120----
Cliente2----360----
[php]$result = mysql_query("SELECT * FROM ".PREFIX."scadenze_clienti")
or die(mysql_error());
$row = mysql_fetch_array( $result );$days = $row['durata'];
$cron = '1';
$nuova_durata = $days - $cron;mysql_query("UPDATE ".PREFIX."scadenze_clienti SET durata='$nuova_durata'")
or die(mysql_error());[/php]Il punto è che in questo modo tutti i valori nel campo Durata si equivalgono quindi 90, 120, 360 diventano 90, 90, 90. E' logico pensare di mettere nell'UPDATE un WHERE ma non so quale argomento porre.
-
Ciao,
puoi fare una sola query cosi:
mysql_query("UPDATE ".PREFIX."scadenze_clienti SET durata=durata-1")In questo modo ti decrementa tutti di 1
-
@Kian said:
Ok, ho trovato un servizio che pare essere molto valido. Adesso vorrei tornare un attimo sullo script perchè ho un problema. Farò degli esempi per cercare di farmi capire.
Tabella ---> scadenze_clienti
--Nome--Durata--
Cliente1----90-----
Cliente2----120----
Cliente2----360----
[php]$result = mysql_query("SELECT * FROM ".PREFIX."scadenze_clienti")
or die(mysql_error());
$row = mysql_fetch_array( $result );$days = $row['durata'];
$cron = '1';
$nuova_durata = $days - $cron;mysql_query("UPDATE ".PREFIX."scadenze_clienti SET durata='$nuova_durata'")
or die(mysql_error());[/php]Il punto è che in questo modo tutti i valori nel campo Durata si equivalgono quindi 90, 120, 360 diventano 90, 90, 90. E' logico pensare di mettere nell'UPDATE un WHERE ma non so quale argomento porre.Perchè insistere così. Forse mi sfugge qualcosa perchè con un semplice while della tabella puoi decrementare, per ogni utente, il valore desiderato ed includere nello stesso ciclo vari controlli. Il WHERE da poter porre sarebbe quello di escludere i clienti con il campo durata uguale a 0 (zero)
Sbaglio o stiamo parlando di due cose diverse
Ciao