Ragazzi, sto provando ad inviare in una sola volta 200 email utilizzando la funzione mail() di php, ma dopo un po, mi da errore tempo di timeout esaurito..
C'è una funzione che permette di modificarlo aumentandolo??
Grazie mille...
Ragazzi, sto provando ad inviare in una sola volta 200 email utilizzando la funzione mail() di php, ma dopo un po, mi da errore tempo di timeout esaurito..
C'è una funzione che permette di modificarlo aumentandolo??
Grazie mille...
hai già visto su http://www.zen-cart.com/wiki/index.p...Email_Problems ?
..:: GSFLASH ::..
HTTP://WWW.GSFLASH.IT
MCTS - ACP - OCP - ECDL
Ubuntu 7.10/OpenSuse 10.3/Vista Premium/MacOSX Leopard
My authentic japanese name is 薗田Sonoda (garden field) 大河 Taiga (big river)
No non c'è quello che voglio io ossia il settaggio del timeout..
Dovresti impostare il set_time_limit, ma il problema è che tanti hosting non è che ti consentono di impostare valori tanto elevati e un invio in massa di 200 email può non essere consentito dal server di posta.
L'ideale è quindi suddividere gli invii in gruppi di 10 email alla volta: ti crei un ciclo con un contatore, ad ogni ciclo reimposti il time limit per allungare la durata dello script:
<?php
set_time_limit(30);
?>
Allora nel ciclo ho fatto così:
$contatore = 1;
$indice = 1;
while($row_clienti = mysql_fetch_array($ris_clienti))
{
if ($contatore == 10*$i)
{
set_time_limit(30);
$i +=1;
}
e nella continuazione del corpo del while invio le mail.. M facendo così, ho fatto in modo che ogni 10 mail, il set_time_limit si imposta a 30? A me da sempre lo stesso errore:
Gateway Time-out
The gateway did not receive a timely response from the upstream server or application.
mi pare che devi incrementare anche il contatore e non solo l'indice.
E comunque bisogna vedere se il tuo hosting permette di dettare il time limit.
io ho messo 30 secondi che ricominciano a scorrere ogni volta che reimposti il time limit.
Per alcuni clienti su aruba linux condiviso ti dico per certo che il set_time_limit e questo metodo di invio non sono riuscito a utilizzarlo, ma ho elaborato una soluzione semplicissima.
io in ogni caso, ad ogni giro del while() faccio anche una query sul record così
dispongo di un controllo sugli invii :
poi sempre nel while tipo come hai fatto tu refresho la paginaCodice PHP:
mysql_query("UPDATE iscritti SET inviato=1 WHERE id_iscritto=$id_iscritto");
- $id_newsletter mi server per recuperare il contenuto della newsletter che voglio inviareCodice PHP:
if ($contatore==10) {
header("Refresh: 5; url=send.php?id_newsletter=".$id_newsletter);
exit;
}
- naturalmente la query principale che tira fuori gli iscritti la faccio con qualcosa tipo
così ad ogni refresh tiro fuori solo quelli che mi servonoCodice PHP:
"SELECT * from iscritti where inviato=0"
toglimi una curiosità:
in questo punto url=send.php?id_newsletter=".$id_newsletter
non dovrei passare anche l'indice e il contatore?
nell''esempio che ti ho fatto non è necessario utilizzare un indice e il contatore è utilizzato solo internamente, per richiaamre il refresh, non è necessario passarlo in queristring.
infatti ti ho detto che utlizzo anche una query dentro ogni ciclo per mettere inviato =1 ad ogni iscritto; quando il contatore è a 10 refresho la pagina e la query principale che estrae gli indirizzi da inviare tira fuori solo quelli successivi con inviato = 0. e così via fino a terminare.