Newsgroup: it.comp.www.php
Titolo: newsletter una possibile soluzione

salve
devo realizzare un sistema per spedire delle mail con foto e testa un 
newsletter a tanti utenti.
prima di postare mi sono messo alla ricerca ed ancora mi sto documentando .
ho fatto una ricerca nei gruppi di google circa 20 pagine che sto leggendo..
Mi č venuta una idea per risolvere il problema del timeout ma non so se 
possa funzionare .
Dunque i problema principale e che lo script va in timeout perchč deve 
elborare troppi dati .
Mi chiedevo ma se io apro una pagina esterna ed a questa pagina a fine 
script gli faccio fare un refresh
magari con javascript a passandoli i parametri tramite url si presenta 
ancora il problema del
TIMEOUT ? oppure posso incorrere i tanti altri problemi quali ?
Rischio di collasare il server ? oppure potrebbe funzionare tranquillamente
io pensavo di passarli tramite js nell'url qualcosa come si fa quando pagini 
i risultati
magari ogni pagina (ogni refresh manda 10 mail...) ed incrementa fino alla 
fine e poi si chiude
Cosa ne pensate ? 

 Cosa ne pensate ?
Il problema di timeout è illusorio, puoi tranquillamente settarlo ad  
infinito.
Il problema è di gestione del server e di coda di invio email.
Se la mole delle email è tale da incraniare il server non è che il  
javascript sia una soluzione poi così allettante. Se l'invio dura due ore  
tu faresti tenere ad un utente la finestra aperta?
Se scaglioni l'invio e lo richiami tramite refresh, se fallisce una  
connessione http e la pagina di interrompe che fai?
Se l'utente chiude per sbaglio la finestra?
Se hai la possibilità di mettere un crontab fai quello e vai sul sicuro,  
devi solo assicurarti di controllare il timeout manualmente (tramite  
comando time(), non con il set_time_limit di php, che non contempla il  
tempo impiegato per processi esterni) e sei relativamente sicuro.
Ovviamente ci andrebbero altre cose ma direi che può essere una buona  
partenza.
Se non hai la possibilità di avere un crontab imho puoi giocare su questo  
o su quel trucco ma non hai mai una soluzione veramente controllabile.
Sicuramente esistono metodi per creare processi in background, ma non è  
mai il massimo della vita.
Tieni presente, ovviamente, che, a differenza degli scaglioni via  
javascript, nel momento in cui la spedizione è avviata è avviata, e non la  
fermi a meno che nello script tu non abbia predisposto qualche condizione  
per lo stop.
Tac
ps: 10 mail per refresh in genere sono pochine.
-- 
La netiquette prevede sign di al massimo quattro righe.
Purtroppo la mia sign in quattro righe non ci stà.

 ha scritto nel messaggio
news:op.s11zu...@taczx.residential.fw...

usare il CCN ? con 50 e-mail in ccn ?


 infinito.
IMHO il problema del timeout e' piuttosto pressante sopratutto in
hosting dove quasi mai puo' essere modificato.
-- 
I am what I am, I do what I can
Do. Or do not. There is not try.


be alla fine ho letto tutti messaggi postati tu stesso in uno hai postato 
questa soluzione (io ho postato prima )
Quindi credi di no ? 

 Quindi credi di no ? 
Normalmente nei miei post indico piu' di una soluzione. Quella del
set_time_limit() puo' essere la soluzione adatta a seconda della
situazione, ma IMHO non e' logico dire "impostalo ad infinto e festa e'
finita".



forse non si č capito ma per tua soluzione intendevo quella del timeout 
infinito.
E poi l'ho scritto cosě (per ricordartelo) mica per darti colpe o onori
(giusto per evitare freintendimenti) 

 vabè però "rispettarlo" significa farede lavoro migliore e più valido...
In effetti anche un timeout infinito può essere causa di problemi. Ma non  
è neanche la soluzione magica a tutti i mali, tenendo conto anche del  
fatto che il tempo non è affidabile.
Se decidi di usare lo scaglionamento, se puoi effettua il controllo ad  
ogni mail con time() e die(), e setta il tempo limite ad un limite  
inferiore rispetto al tempo di refresh di javascript.
Se il tuo hosting ti fornisce la possibilità di usare il crontab cmq è  
molto meglio.
Tac



Diciamo che ho un server virtuale quindi credo di poterlo usare ci sono due 
cose che preoccupano
cronta è complesso da imparare ? io imparo tutto o quasi ma sono lento 
all'ainizio e non ho molto tempo purtroppo
Secondo più o meno ho capito come funziona ma se io mando una newsletter 
(inteso ad un gruppo)
fin quando non ha terminato non posso mandarne altre ?
Oppure come posso gestire questa evenienza ?
e come faccio a sapere quando ha terminato ?
Inoltre a scaglioni che si intende ? cioè come faccio a dirgli oggi da 1-100 
domani da 101 a 2000
etc.
grazie scusa le tante domande

 usare il CCN ? con 50 e-mail in ccn ?
Buona soluzione una volta, con l'avvento dei sistemi antispam non la  
ritengo una pratica troppo consigliabile. Certo, magari mandando solo 2 o  
3 ccn, cmq si può avere un ottimo aumento di prestazioni, ma siamo cmq  
lontani dall'ordine di grandezza che stiamo (credo) prendendo in esame.
Oltre a questo le email non sono piu' personali, cioè il nome del  
destinatario non compare nell'indirizzo, è una sciocchezza, ma ad alcuni  
importa.
Rende inoltre impossibile la customizzazione in base al ricevente.
Es:
Caro, "[nome_utente]", scusa se ti mandiamo la newsletter, volevamo dirti  
che ci è morto il gatto.
Se ritieni che questa newsletter sia inutile puoi sempre <a  
href="
http://example.com/nonnepossopiu.php?id_utente=[id_utente]
">disiscriverti</a>,  
saluti, ciao.
Rende invece solamente piu' difficoltose altre operazioni di  
parsing/sostituzione del testo basate su  
categorie/sottogruppi/profilazioni.
Tac


 grazie scusa le tante domande
Il crontab viene inviato ogni tot minuti a prescindere.
nel php controlli se ci sono sul db delle newsletter ancora da mandare e  
nel caso ci siano cominci a mandarle.
Che hai terminato lo sai controllando il db.
Immagina di avere uno script il quale, senza passargli parametri  
particolari, leggendo il db legge quali sono le newsletter ancora inviare.
Insomma è cmq una soluzione piu' complessa del ciclo+javascript lo farei  
solo se hai tempo per studiartelo bene, altrimenti effettivamente la  
soluzione migliore è quella piu' semplice.
Nel crontab puoi avviare script php con un comando di shell o tramite lynx  
(che è un browser di test).
Non è molto diverso da usare il php normalmente ma se è la prima volta che  
lo fai un po' di studio ci và.


 ha scritto nel messaggio 
news:op.s13nd...@taczx.residential.fw...

quindi dovrei gestire un pool di messaggi il prolema e che uso windows in 
locale esiste qualche simulatore ? 

 locale esiste qualche simulatore ? 
Se cerchi il complementare del cron su Windows č Operazioni Pianificate.
Heber D'Alberto

 locale esiste qualche simulatore ?
Vedi altro post di risposta.
Se lavori con molta cura sullo scheduler *prima* di implementare l'invio  
effettivo della mail, poi per i test ti arrangi anche con il browser e dei  
semplici f5.



si farň cosě e visto e mi piace anche tanto sta cosa :D
Senti esistono degli algoritmi specifici per fare una cosa del genere ? 
(ovviamente si!)
ma dove posso trovare info (in php giusto per non andare ot)
in cui possano trovare info a riguardo consigli ed errori da non commettere 
?
ultima cosa č portabile come soluzione ? se non offrono cron che alternative 
ho ?
(ad esempio su iis) ?
grazie ciao 

 (ad esempio su iis) ?
Su iis dovresti usare le "operazioni schedulate" o qualcosa del genere.
