Hallo,
Ik ben bezig met een e-mail systeem dat zo wordt verzonden:
Nu wil ik graag dat hij tussen de e-mails verzemden in 1 seconden rust houd.PHP Code:
$sql = mysql_query("select * from `m_emails`");
while ($x = mysql_fetch_array($sql)) {
mail($x[email], $_POST[onderwerp], $bericht, $headers) or die("Kon de mail niet verzenden naar $x[email]");
Is dit mogelijk toe te passen? Weet niet goed op welk woord ik moet zoeken op php.net of Google?
Groeten,
Bernt M.
- Stop na 3 of 4 seconden weer verder.
-
05-01-2011, 19:39 #1
- Berichten
- 526
- Lid sinds
- 14 Jaar
Stop na 3 of 4 seconden weer verder.
-
In de schijnwerper
-
05-01-2011, 19:40 #2
- Berichten
- 237
- Lid sinds
- 18 Jaar
Re: Stop na 3 of 4 seconden weer verder.
sleep() ?
-
05-01-2011, 19:40 #3
- Berichten
- 1.499
- Lid sinds
- 17 Jaar
Re: Stop na 3 of 4 seconden weer verder.
sleep()
-
05-01-2011, 19:43 #4
- Berichten
- 526
- Lid sinds
- 14 Jaar
Re: Stop na 3 of 4 seconden weer verder.
Dankje voor de snelle reactie ik zal kijken of het lukt;)
@Rob & @Tom
Aanvullend bericht:
Is er ook een manier om dit te checken en is dit goed?
$sql = mysql_query("select * from `m_emails`");
while ($x = mysql_fetch_array($sql)) {
sleep(10); mail($x[email], $_POST[onderwerp], $bericht, $headers) or die("Kon de mail niet verzenden naar $x[email]");Laatst aangepast door Bernt M. : 05-01-2011 om 19:47 Reden: Automatisch samengevoegd.
-
06-01-2011, 00:14 #5
- Berichten
- 433
- Lid sinds
- 17 Jaar
Re: Stop na 3 of 4 seconden weer verder.
Wat bedoel je met checken?
Als je bedoelt met checken of je het script kunt testen zonder dat er direct mails worden verzonden naar je bestaande leden.
Ja tuurlijk kan dat, maak je even een ander tabelletje aan met een paar test e-mail adressen erin, bijv. die van jezelf zodat je kunt zien dat het aankomt, en je past je query erop aan.
Alleen weet je zeker dat je dit wilt? Nu wordt voor iedere mail 10 seconden gewacht, als je dus 100 mails wilt verzenden wordt er in totaal (100x10) 1000 seconden gewacht, wat neerkomt op ruim 16 minuten.
Je kunt makkelijk 100 mails naar de server sturen, en dan vervolgens 10 seconden wachten, en de volgende lading sturen.
Je krijgt dan bijv.
PHP Code:<?php
$query = "SELECT
email
FROM
m_emails";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result))
{
$counter++;
if ($counter % 100 == 0)
{
sleep(10);
}
mail ($row['email'], $_POST['onderwerp'], $bericht, $headers) or die ('Kon de mail niet verzenden naar '.$row['email']);
}
?>Laatst aangepast door stefanvi : 06-01-2011 om 00:20
-
06-01-2011, 01:07 #6gast16278 Guest
Re: Stop na 3 of 4 seconden weer verder.
Toch lullig zo'n "or die()". 1000 mailtjes, mailfunctie faalt een keertje na 200 mailtjes en de laatste 800 krijgen geen mail meer...
-
06-01-2011, 01:11 #7
- Berichten
- 107
- Lid sinds
- 14 Jaar
Re: Stop na 3 of 4 seconden weer verder.
probeer is iets qua BULK mail, hierover is meer te vinden op google etc ( En ja gratis! )
-
06-01-2011, 01:23 #8
- Berichten
- 433
- Lid sinds
- 17 Jaar
Re: Stop na 3 of 4 seconden weer verder.
@Luuk: idd, dat is zo, heb de code vrij letterlijk overgenomen, en er eigenlijk niet op gelet, maar je hebt wel gelijk!
-
06-01-2011, 01:34 #9
- Berichten
- 107
- Lid sinds
- 14 Jaar
Re: Stop na 3 of 4 seconden weer verder.
Luuk en stefanvi, dit ligt aan de max uitvoer tijd van een script! dit moet ingesteld worden in php.ini wat alleen kan met server acces
-
06-01-2011, 01:42 #10gast16278 Guest
Re: Stop na 3 of 4 seconden weer verder.
Een mail() functie kan zomaar falen. Een foutief e-mail adres, een time-out van de mailserver, wat dan ook. Wat ook de oorzaak van het falen is, direct wordt de die() uitgevoerd wat ervoor zorgt dat alle verdere e-mail niet meer verzonden wordt. De maximum execution time heeft hier helemaal niets mee te maken.
-
06-01-2011, 01:44 #11
- Berichten
- 433
- Lid sinds
- 17 Jaar
Re: Stop na 3 of 4 seconden weer verder.
Ja, dat was iets wat wel in me opgekomen was, maar ik wist niet of dat er in dit geval toe deed. Heb de functie sleep namelijk nog bijna nooit gebruikt, en wist dan ook niet of je nog steeds aan die 30 seconden gebonden was.
-
06-01-2011, 02:01 #12gast16278 Guest
Re: Stop na 3 of 4 seconden weer verder.
Ja, dan ben je er nog steeds aan gebonden. Die maximum execution time zorgt er namelijk voor dat php bestanden met een oneindige loop niet oneindig in het geheugen blijven staan. Een sleep(31) zal op veel hosts dus al een error geven.
Dit heeft verder helemaal niets te maken met die "or die()" functie waarover ik sprak.
-
06-01-2011, 12:19 #13
Elephant Media GbR
- Berichten
- 1.253
- Lid sinds
- 18 Jaar
Re: Stop na 3 of 4 seconden weer verder.
Waarom sleep gebruiken? Hij voert de volgende while toch pas uit als mail() is uitgevoerd?
En voor je CPU maakt het ook niet veel uit, of die nou 800x achter elkaar een mail stuurt, of 800x 10 seconde moet wachten..
Kun je uitleggen waarom je sleep wilt gebruiken ?
-
06-01-2011, 12:33 #14gast16278 Guest
Re: Stop na 3 of 4 seconden weer verder.
Omdat de mailserver zoveel emails niet kan(wil) afhandelen. Er zit bijvoorbeeld een maximum aan van 50 berichten per seconde en die while loop is wel sneller. Mail functie zal falen, or die() treedt in werking, andere mails worden niet meer verzonden.
-
06-01-2011, 16:36 #15
- Berichten
- 526
- Lid sinds
- 14 Jaar
Re: Stop na 3 of 4 seconden weer verder.
Welke functie zouden jullie anders gebruiken dan mail()?
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic