Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Sviluppo e Gestione siti web > Php - Mysql
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 18-12-08, 00:59   #1 (permalink)
 
L'avatar di Kian
 
Data di registrazione: Feb 2008
Messaggi: 115
Arrow Mysql + PHP: Update $valore-1 ad ogni giorno che passa

Ciao

Sono nella fase finale dello sviluppo di un pannello Billing + Mailer + tanti altri servizietti che mi interessano. Adesso però proprio all'ultimo passo mi sono bloccato. Vengo al punto.

Un cliente acquista un servizio con menu a tendina e può scegliere la durata del contratto
Codice PHP:
<select size="1" id="durata" name="durata">
<
option value="30">1 mese</option>
<
option value="90">3 mesi</option>
<
option value="180">6 mesi</option>
<
option value="270">9 mesi</option>
<
option value="360">12 mesi</option>
</
select
Come potete intuire al submit mi salvo la durata del contratto in giorni e considero tutti i mesi di 30 giorni. Il dato viene salvato nel campo durata della tabella servizi nel database (mysql).

Ho già un mailer system che invia email ai clienti raccogliendo tutti i dettagli in base all'id cliente. Il punto è che devo sempre esserci io a premere "Invia". Vorrei automatizzare il tutto in questo modo.

Pippo compra un servizio per 3 mesi (90 giorni). Il dato 90 viene salvato nel database
Codice PHP:
INSERT INTO servizi (durataVALUE ($durata
A questo punto ogni giorno che passa il campo deve essere aggiornato automaticamente
Codice PHP:
UPDATE servizi SET durata=$durata-
Quando mancano 7, 3 e 1 giorno alla fine del contratto partono le email che ho già preimpostate nel sistema.

Come faccio a esprimere in php l'idea che ad ogni giorno che passa quel campo deve essere ridotto di 1?

Grazie

Ultima modifica di Kian : 18-12-08 01:01.
Kian non in linea   Rispondi citando
Vecchio 18-12-08, 01:12   #2 (permalink)
ModSenior
 
L'avatar di Thedarkita
 
Data di registrazione: Aug 2006
Ubicazione: Messina
Messaggi: 6,439
Invia un messaggio tramite Skype a Thedarkita
Ciao Kian,

Puoi mettere lo script in cron, facendo dcrementare ogni giorno il campo e nel caso manchino 7,3 o 1 giorno invii un email.
Esistono numerosi servizi di cron gratuiti esterni che puoi usare, se non puoi farlo dal tuo server

Ultima modifica di Thedarkita : 18-12-08 01:40.
Thedarkita non in linea   Rispondi citando
Vecchio 18-12-08, 01:38   #3 (permalink)
 
L'avatar di Kian
 
Data di registrazione: Feb 2008
Messaggi: 115
Wow grazie mille... non solo mi hai risposto, mi hai aperto nuovi orizzonti hihi
Kian non in linea   Rispondi citando
Vecchio 18-12-08, 04:11   #4 (permalink)
 
L'avatar di Kian
 
Data di registrazione: Feb 2008
Messaggi: 115
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!



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()

Ultima modifica di Kian : 18-12-08 04:39.
Kian non in linea   Rispondi citando
Vecchio 18-12-08, 12:11   #5 (permalink)
ModSenior
 
L'avatar di Thedarkita
 
Data di registrazione: Aug 2006
Ubicazione: Messina
Messaggi: 6,439
Invia un messaggio tramite Skype a Thedarkita
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.
Thedarkita non in linea   Rispondi citando
Vecchio 18-12-08, 14:38   #6 (permalink)
 
L'avatar di Kian
 
Data di registrazione: Feb 2008
Messaggi: 115
Uhm se non c'è altro metodo potresti dirmi perchè non funziona?

File spoiler.php
Codice PHP:
  01 * * * * /usr/local/bin/php wwwmiositoit/script.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 "*".
Kian non in linea   Rispondi citando
Vecchio 18-12-08, 14:41   #7 (permalink)
ModSenior
 
L'avatar di Thedarkita
 
Data di registrazione: Aug 2006
Ubicazione: Messina
Messaggi: 6,439
Invia un messaggio tramite Skype a Thedarkita
Attento che le variabili globali (esempio $_SERVER) non esistono quando lo script è lanciato da cron, se lo script usa queste variabili hai problemi...
Thedarkita non in linea   Rispondi citando
Vecchio 18-12-08, 15:16   #8 (permalink)
 
L'avatar di Kian
 
Data di registrazione: Feb 2008
Messaggi: 115
No, lo script fa un UPDATE nel database e niente altro
Kian non in linea   Rispondi citando
Vecchio 18-12-08, 15:57   #9 (permalink)
ModSenior
 
L'avatar di Thedarkita
 
Data di registrazione: Aug 2006
Ubicazione: Messina
Messaggi: 6,439
Invia un messaggio tramite Skype a Thedarkita
Posta l'errore completo...
Thedarkita non in linea   Rispondi citando
Vecchio 18-12-08, 16:08   #10 (permalink)
 
L'avatar di Kian
 
Data di registrazione: Feb 2008
Messaggi: 115
Quote:
Parse error: syntax error, unexpected '*' in /web/htdocs/wwwmiositoit/home/cartella/spoiler.php on line 3
Generato da questo
Codice PHP:
<?
*/* * * * /usr/lib/php /home/web/wwwmiositoit/cartella/automation_script.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.
Kian non in linea   Rispondi citando
Vecchio 18-12-08, 16:10   #11 (permalink)
ModSenior
 
L'avatar di Thedarkita
 
Data di registrazione: Aug 2006
Ubicazione: Messina
Messaggi: 6,439
Invia un messaggio tramite Skype a Thedarkita
Poi postare la prima parte di codice del file spoiler.php?
Thedarkita non in linea   Rispondi citando
Vecchio 18-12-08, 16:32   #12 (permalink)
 
L'avatar di Kian
 
Data di registrazione: Feb 2008
Messaggi: 115
Non c'è una prima parte. Questo è tutto quello che c'è in spoiler.php
Codice PHP:
 <?
*/* * * * /usr/lib/php /home/web/wwwmiositoit/cartella/automation_script.php
?>
Kian non in linea   Rispondi citando
Vecchio 18-12-08, 16:34   #13 (permalink)
ModSenior
 
L'avatar di Thedarkita
 
Data di registrazione: Aug 2006
Ubicazione: Messina
Messaggi: 6,439
Invia un messaggio tramite Skype a Thedarkita
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
Thedarkita non in linea   Rispondi citando
Vecchio 18-12-08, 16:52   #14 (permalink)
 
L'avatar di Kian
 
Data di registrazione: Feb 2008
Messaggi: 115
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.
Kian non in linea   Rispondi citando
Vecchio 18-12-08, 16:55   #15 (permalink)
ModSenior
 
L'avatar di Thedarkita
 
Data di registrazione: Aug 2006
Ubicazione: Messina
Messaggi: 6,439
Invia un messaggio tramite Skype a Thedarkita
Fanno un controllo su ogni pagina, di quando è stato lanciato lo script l'ultima volta, sistema che utilizza più risorse del server...
Thedarkita non in linea   Rispondi citando
Rispondi


Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 13:01.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.