Ciao a tutti, sto gestendo una mailing list di circa 2.100 record per conto di un cliente. Uso questo script per far sì che il cliente possa inviare occasionalmente una newsletter:
Codice PHP:
<ul>
<?php
$users_db = $db->query("SELECT name, email FROM users");
$newsletter_db = $db->queryUniqueObject("SELECT * FROM newsletters WHERE _id=$id");
include_once '../application/shared/newsletter.php'; // static
while ($user = $db->fetchNextObject($users_db)) {
if (mail($user->email, $newsletter_db->title, $newsletter, $headers)) {
echo "[*]Newsletter spedita a [b]{$user_name}[/b] ({$user->email}).";
}else{
echo "<li style='color:red'>ERRORE: [b]{$user_name}[/b] ({$user->email}).";
}
}
$db->execute("UPDATE newsletters SET sendingDate = NOW() WHERE _id=$id");
echo "<p style='color:green'>Invio newsletter concluso con successo!</p>";
?>[/list]
L'ho testato e funziona, ma i miei test si sono limitati a una dozzina di indirizzi email, e non so come "reagisce" invece quando gli indirizzi diventano migliaia.
So per certo che l'ultima volta lo script ha funzionato fino a un certo punto e poi ha fallito, questo perché:
[list=1][*]La newsletter è arrivata ai primi indirizzi nel database;[*]La newsletter non è arrivata ad un mio indirizzo che era tra gli ultimi record;[*]L'ultima query non è stata eseguita.[/list=1]
Chiedo a voi esperti, quale può essere stata la causa dell'interruzione dello script?
Potrebbe essersi esaurita la memoria a runtime?
Ma sopratutto, quale può essere la soluzione a un problema del genere, considerando che sono in shared hosting e non ho quindi la possibilità di aumentare la memoria di PHP a mio piacimento?
Ringrazio in anticipo.