login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Nieuwsbrief (Opgelost)

Offline Xan - 20/06/2007 09:45 (laatste wijziging 20/06/2007 09:46)
Avatar van XanHTML interesse Hallo SiMa,

Ik heb vorig jaar een leuk nieuwsbrief systeempje gemaakt en dat werkte perfect met maar een aantal leden.

Nu heb ik iets van 300 leden waar een nieuwsbrief heen moet.

Mijn script werkt met een while-loop en verstuurd zo om de beurt een email adres uit mijn database de nieuwsbrief. En aan het eind komt er te staan: 'het onderstaande bericht is succesvol verstuurd naar alle leden: blabla bericht '

Maar nu ik naar 300 leden de nieuwsbrief moet versturen duurt het even voordat alle emailadressen bij langs zijn geweest, en op een gegeven moment krijg ik dan een wit scherm en krijg ik dus het gevoel dat de helft mijn nieuwsbrief niet heeft gekregen.

Hoe kan ik dit probleem oplossen.

Ik had een keer iets gelezen over wachttijd van de server uitzetten?

Gr,

Xan

13 antwoorden

Gesponsorde links
Offline marten - 20/06/2007 09:50
Avatar van marten Beheerder max execution time hoger zetten.
Offline Xan - 20/06/2007 09:53
Avatar van Xan HTML interesse Ik neem aan dat dat door mijn hoster veranderd moet worden?
Offline marten - 20/06/2007 09:56
Avatar van marten Beheerder jep

wat je ook kan doen is de server voor de gek houden. Want als er een tijdje niks gebeurt dan kan het script weleens gesloten worden. Dit akn je oplossen door na elk x aantal mailtjes een PHP.net: sleep in te bouwen.
Offline Mad_Mike - 20/06/2007 10:11 (laatste wijziging 20/06/2007 10:12)
Avatar van Mad_Mike PHP beginner kan je zelf ook doen:
http://php.net/set_time_limit

set_time_limit — Limits the maximum execution time
LETOP:
This function has no effect when PHP is running in safe mode. There is no workaround other than turning off safe mode or changing the time limit in the php.ini.

en dat laatste zal inderdaad wel door je hosting gedaan worden.

edit:
Je kan ook na ieder mailje wat succesvol verstuurd is het email adres echo-en. Zodat je achteraf kan kijken naar wie het allemaal gestuurd is.
Offline Ultimatum - 20/06/2007 10:58
Avatar van Ultimatum PHP expert Of je chopt je hele lijst in 10 delen ofzo en dan verstuur je 1 deel per keer..
Offline Xan - 20/06/2007 11:10 (laatste wijziging 20/06/2007 11:19)
Avatar van Xan HTML interesse @Mad_Mike: achteraf wordt er niks ge-echod, er word alleen maar een wit scherm getoond. Maar dit heb ik opgelost met een extra veld naast het emailadres.

In ieder geval, bedankt voor de reacties. Ik ga hier even weer mee verder klungelen.
Offline Mad_Mike - 20/06/2007 11:20
Avatar van Mad_Mike PHP beginner Dat je wit scherm krijg komt omdat er tot op dat moment nog geen output is. Maar als je na het succesvol versturen van een email iets echo-ed kan je altijd zien tot waar hij is gekomen.
Wanneer je alleen achteraf, na de while, een echo hebt dat alles succesvol is verzonden, maar in de while stopt het script (omdat het te lang duurt) krijg je zoals nu een wit scherm.

Heb je dit set time limit al geprobeerd op 0 te zetten? Waarschijnlijk gaat dan wel alles goed!
Offline kickasgamer - 20/06/2007 11:23
Avatar van kickasgamer PHP ver gevorderde ja je kan ook de mails per 50 laten versturen end an een minuutje nisk en dan weer 50

dit van via sleep : php.net: sleep
Offline Mad_Mike - 20/06/2007 11:25
Avatar van Mad_Mike PHP beginner volgens mij heeft dat geen effect op de maximum execution time. Het script is hierdoor alleen langer bezig... en zal dus nog minder emails in dezelfde tijd kunnen versturen 
Offline Xan - 20/06/2007 11:28 (laatste wijziging 20/06/2007 11:31)
Avatar van Xan HTML interesse ooh zo, oke duidelijk. aankomende donderdag ga ik weer bezig met een nieuwsbrief dus zal ik dan zien of het gewerkt heeft.

edit:

nog wel even een vraag, hoe gebruik ik set_time_limit?

set_time_limit ( int $seconds ) <-- moet ik dit gewoon bovenaan in mijn index.php zetten?
Offline marten - 20/06/2007 11:32 (laatste wijziging 20/06/2007 11:37)
Avatar van marten Beheerder Dat kan door middel van de functie PHP.net: ini_set
Offline Mad_Mike - 20/06/2007 11:33 (laatste wijziging 20/06/2007 11:35)
Avatar van Mad_Mike PHP beginner ik mag aannemen dat wanneer je zelf dit email script geschreven hebt ook wel weet hoe je een functie moet aanroepen. Maar inderdaad, zet bovenaan set_time_limit(0); en dan ben je klaar als het goed is...
Nadeel is wel dat het script dan dus ook niet meer automatisch stopt wanneer er iets anders fout gaat (oneindige while ofzo).

Dus misschien kan je ipv 0 een ander heeel groot getal gebruiken of zeker zijn dat je scripts goed zijn 

edit:
@Marten.... gewoon set_time_limit(0); is voldoende hoor... niets met ini_set();
Offline Xan - 20/06/2007 11:37 (laatste wijziging 20/06/2007 11:39)
Avatar van Xan HTML interesse Daar heb je gelijk aan, maar het stond een beetje onduidelijk op php.net.

Het script werkt 100% zeker daar twijfel ik niet aan.

Bij deze: probleem opgelost, bedankt
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.193s