Problematikken ligger ikke i en begrænsning - det er en teknisk udfordring at få sådan noget til at fungere hensigtsmæssigt korrekt.
Problemet med at køre et sådan script gennem browseren er risikoen for at forbindelsen afbrydes eller en connection timeout hvilket vil medføre at din udsendelse afbrydes. Det løses primært ved at lade serveren gennemføre udsendelsen. Det kan gøres på forskellige måder, men den mest almindelige er dog et cronjob. Her skal der igen lægges vægt på at de selvsamme problemer som nævnt tidligere også vil være et problem når du bruger eksterne tjenester som cronjob.de til at udføre disse.
Du skal også overveje hvordan dit script som udsender disse mails skal agere. Det er vigtigt at håndtere fejl og reagere ud fra disse end at reagere på fejlene.
En typisk ting som de fleste udviklere - af uransagelige årsager - smider i deres scripts er linier som disse:
<?php
$sql = "SELECT * FROM table";
$res = mysql_query($sql) or die(mysql_error());
?>
Scriptet vil herefter blot dø og du kan ikke komme videre. Det er oftest ikke ønskeligt.
En bedre løsning:
<?php
$sql = "SELECT * FROM table";
$res = mysql_query($sql);
if(!$res)
file_put_contents("error.log", "MySQL fejlede i ".__FILE__." på linie ".__LINE__.": ".mysql_error()."\n", FILE_APPEND);
?>
På den måde har du registreret fejlen og kan yderligere enten fortsætte med scriptet eller stoppe det - f.eks hvis resten af scriptet er afhængig af at denne forespørgsel gik godt.
Vigtigst af alt er KISS princippet (
http://en.wikipedia.org/wiki/KISS_principle ). Jo mere kompliceret du gør ting som disse, jo større risiko er der for fejl.
Jeg har set adskillige eksempler på scripts til at sende mails og sms'er ud, hvor der - for hver enkelt mail eller sms der blev afsendt - blev en eller flere MySQL forespørgsler. Det vil i princippet sige at du - med en database på 5000 modtagere - har 5000 muligheder for at MySQL fejler (intet svar, ugyldige tegn eller den bare hænger). Start med at hente alle nødvendige oplysninger frem, klargør det der skal sendes og hvis alt er klart, så send det.
Håber du fik lidt at arbejde ud fra.