7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)
  • Q:
    Bijdrager
    wout3r

    [PHP] Mailings versturen

    Hallo mede-maccers.

    Ik ben bezig met een leuk systeem aan het schrijven waarmee er een batch mailings de deur uit kunnen worden gegooid. Ik maak dit in PHP in combinatie met MySQL.
    In de database staan alle emailadressen (zo’n 14000) en dat wordt allemaal netjes opgehaald. Nu zien misschien sommige het al aankomen..
    Ik ben niet van plan om een while loop van 14000 uit te gaan voeren. Dus ik dacht zelf aan een LIMIT die hij steeds aanroept in de query. Ongeveer per loop zo’n 10 pakt en daarna de volgende. Alleen kom ik er niet uit hoe ik dat handig kan aanpakken. Ik wil dus dat hij in de 1e loop een LIMIT pakt van 0, 10 en bij de volgende 10, 10 en daarna 20, 10 enzovoorts.

    Ik maak gebruik van deze constructie (even een snel voorbeeld):
    [code:1:2baa40263b]
    <?php
    $mSQL = mysql_query("SELECT emailadres FROM emailadressen LIMIT 0, 10");

    while( $sVar = mysql_fetch_array($mSQL))
    {
    $sEmailadres = $sVar[’emailadres’];
    mail($sEmailadres);
    }
    ?>
    [/code:1:2baa40263b]

    Hoe kan ik er dan voor zorgen dat de query na de while loop nog een keer de loop afgaat maar dan met een volgend LIMIT. Is het dan slim op de while loop nog eens in een for loop te zetten (volgens mij niet..)? Ik wil voorkomen dat de server de verbinding verbreekt want over 13000 emailadressen doet hij wel even..

    Kan iemand mij hierbij helpen?

    Groeten, Wouter

    Bijdrager
    Rick Mulder

    Waarom wil je dat? Ik zou die 14.000 adressen gewoon allemaal aflopen. Wat is precies je probleem?

    Bijdrager
    PaneVino

    De startwaarde zal je, op een of andere manier, moeten meegeven …

    Ik denk overigens niet dat dit gaat werken via een web-interface… Dat gaat veel te lang duren met 14000 adressen.

    Lijkt mij verstandiger om de mailing via de command-line in de achtergrond te laten lopen.

    Ik lees nu dat je het al over een batch-programma hebt … Wat ik zou doen is wellicht dit.

    1. ophalen van het aantal adressen in de database
    2. een while-lus ingaan waarin de query uitgevoerd wordt en de startwaarde begint op 0

    [code:1:b6a0cef7ea]
    $startwaarde = 0;
    $mail_per = 50;
    $sleep = 60;

    $count = mysql_query("select count(*) from emailadressen");

    $runs = floor($count / $mail_per);
    for ($i = 1; $i <= $runs; $i++)
    {
    $mSQL = mysql_query("SELECT emailadres FROM emailadressen LIMIT $startwaarde,$mail_per")
    while( $sVar = mysql_fetch_array($mSQL)) { $sEmailadres = $sVar[’emailadres’]; mail($sEmailadres); }
    $startwaarde += $mail_per;
    sleep($sleep);

    }
    [/code:1:b6a0cef7ea]

    Althans … zoiets als dit …..

    Als je het progje meerdere keren wil opstarten, haal je de for-lus weg en moet je $startwaarde meegeven op de command-line als optie…

    Bijdrager
    wout3r

    Ja, ik weet dat het niet handig is om dit via een webinterface te gaan doen. Maar degene voor wie ik dit maak wilt dit absoluut dat zij vanuit overal waar ze is het kan versturen.

    Dus ik vraag me af hoe ik dit het beste kan maken..

    Bijdrager
    iJoost

    En het zijn dus echt 14000 confirmed Opt-in adressen? Want ik krijg al spam genoeg…

    Dat verhaal van “via webinterface overal kunnen doen” klinkt dubieus. :-(

    Bijdrager
    wout3r

    Nou het is voor iemand die meerdere mensen in dienst heeft en dus ook die mailing moeten kunnen versturen zonder een programma te installeren op de computer.

    Bijdrager
    iJoost

    OK… Maar de echte vraag was natuurlijk de vraag die ik stelde.;-)

    Ik heb net http://www.inmac.nl bijna fysiek moeten bedreigen om ze aan hun verstand te peuteren dat een enkele aankoop vijf jaar geleden niet betekent dat ze mij nu meerdere keren per week mogen bestoken met ondermeer aanbiedingen van Windozen. Ongetwijfeld met de beste bedoelingen of zo maar storend ondoordacht. Vooral omdat ze ook nauwelijks reageren op klachten. Daar koop ik dus zeker nooit meer iets.

    Confirmed Opt-in is de enige fatsoenlijke manier om in bulk te mailen. Al het andere is gewoon spam.:-(

7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.