white screen of death na mail-script
Het formulier laat toe om een selectie te maken van groepen. Bijvoorbeeld het eerste leerjaar, het tweede leerjaar,... Na het verzenden komt er een tabel op het scherm met de emailadressen en namen van personen naar wie de mails zijn verstuurd.
Het loopt echter een beetje fout als ik iedereen selecteer. Een groep bestaat uit maximum 30 e-mailadressen. 'Iedereen' selecteren is echter een 500-tal e-mails dat worden verstuurd. Na het verzenden, moet ik even wachten (mails worden dan verstuurd), maar daarna kom ik niet op de pagina waar de tabel met namen en adressen staat, maar krijg ik een white screen of death. Er worden echter wel mails verstuurd, maar ik weet niet ofdat iedereen de mail wel heeft aangekregen.
Hieronder een stuk van mijn code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if($naar=="Alle leden"){
$leden=mysql_query("SELECT Naam, Voornaam, Email FROM Leden WHERE ($seizoen='Ja' || $seizoen='Neen')");
while($lid=mysql_fetch_array($leden)){
$naam=$lid['Naam'];
$voornaam=$lid['Voornaam'];
$email=$lid['Email'];
if(mail($email, $onderwerp, $msg, $headers)==true){
$succes=true;
}
else{
$succes=false;
}
$maillist[]=array("$naam","$voornaam","$email","$succes");
}
}
?>
if($naar=="Alle leden"){
$leden=mysql_query("SELECT Naam, Voornaam, Email FROM Leden WHERE ($seizoen='Ja' || $seizoen='Neen')");
while($lid=mysql_fetch_array($leden)){
$naam=$lid['Naam'];
$voornaam=$lid['Voornaam'];
$email=$lid['Email'];
if(mail($email, $onderwerp, $msg, $headers)==true){
$succes=true;
}
else{
$succes=false;
}
$maillist[]=array("$naam","$voornaam","$email","$succes");
}
}
?>
Deze code werkt perfect met een klein aantal e-mail adressen. Ik vermoed dat de mail-functie in php het probleem veroorzaakt, omdat die bij elke mail zijn protocols opent en sluit. Hierdoor duurt het tamelijk lang voordat de browser verder kan en er waarschijnlijk een time-out error wordt gecreeerd. Maar hiervan heb ik geen kennis.
Kan iemand mij hierbij helpen?
Alvast bedankt
Steven
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 13/01/2015 11:36:20 door - Ariën -
Verder is het geen 'white screen of death' omdat het script geen fatale fout uit zijn eigen maakt. Dus ik noem het gewoon een 'blank screen'
Gewijzigd op 13/01/2015 11:35:57 door - Ariën -
Ik kan dat wel in mijn script zetten, maar het probleem is dat ik het formulier niet kan testen zonder 500 mensen lastig te vallen. Dus dat is niet echt een oplossing.
Werkt het dan wel?
Zo ja, dan vermoed ik dat php een timeout krijgt.
Ik raad aan om na elke 10 mails even een wachtpauze van enkele seconden in te bouwen. Of beter zelfs, gebruik te maken van PHPmailer en dan per 20 mails over een enkele mail met BCC verdelen.
Dan hoef je er maar 25 mails voor uit te schieten.
Let er wel op dat PHP een max_execution kent.
Wat geeft dit aan?
Gewijzigd op 13/01/2015 11:45:26 door - Ariën -
Hoe kan ik de php time-out oplossen?
Je kan hem verlengen door dit bovenaan te plaatsen:
Persoonlijk raad ik wel aan om per mailadres bij te houden of de mail al verstuurd is. Als je script nu onderbroken wordt, dan weet je nu niet meer wie een mail gehad heeft, en moet je sommige mensen teisteren met dubbele mails.
Gewijzigd op 13/01/2015 11:50:07 door - Ariën -
Probleem is dat ik het echt niet kan testen, of ik moest een groep aanmaken met allemaal valse e-mailadressen.
Ik hoop dat het hiermee opgelost is. Zal het laten weten als ik het nog eens nodig heb gehad.
1000 keren bedankt in ieder geval
Dan zal je ook kunnen uitzoeken of de executiontime echt werkt ;-)
Gewijzigd op 13/01/2015 12:01:08 door - Ariën -