- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Mysql + PHP: Update $valore-1 ad ogni giorno che passa
-
Dunque direi che c'è un grosso problema
giorgiotave.it/forum/php-mysql/41570-chicca-d-utilizzare-cron-senza-account-di-root.html
Ho utilizzato questo metodo per sottrarre il valore 1 da un campo in una tabella del database. Per provarlo la prima volta ho impostato l'esecuzione dello script ogni 30 secondi. Quando ho visto che funzionava ho aggiunto i dettagli e messo tutto online. A questo punto mi sono reso conto che vengono letteralmente spammati ogni 30 secondi tutti i miei script per 2 volte!
oo
Cancellare il php, eliminare gli script, fare die(), ignore_user_abort(FALSE), non c'è modo di fermare i 2 script! Ogni 30 secondi spammano in 2 scrivendo nel database. Anche se gli blocco la connessione al database, cambiando il nome del php che effettua la connessione, questi tornano a spammare appena la ripristino. Non ditemi che devo aspettare il riavvio del server :(): (sono shared hosting).
Come termino questo dannato script?
Edit: sono riuscito a killare lo script creando una riga che lo faceva bloccare. Bhè vista questa esperienza non credo possa usare i cron. E' vero che vanno avanti in eterno ma nel momento in cui ti riavviano il server devi riavviare il cron manualmente e magari intanto hai anche perso dei giorni senza saperlo. Ci sono altri modi? Che so un getdate()
-
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