ugrás a tartalomhoz

Lassu levélküldés

gtoma · 2009. Dec. 8. (K), 14.36
Sziasztok!

Egy hírlevél küldő progival van gondom.
swift -et használok a kiküldésre. SMTP-n keresztük.

Sajnos percenként kb 10 levelet tud kiküldeni. Ez igen kevés :(

Valakinek van 5lete mi lehet a gond?

while(list($db, $Data) = each($Hirlevelek)) {
    $smtpdb++;
    if($smtpdb >= 20) {
        $smtpdb = 1;
        $AktualSMTP++;
    }
    if (($AktualSMTP+1) >= $OsszSMTP)
        $AktualSMTP=0;

    $DBa++;
    $KID = $Data['hirlevel_kuldes_id'];
    $UID = $Data['ugyfel_id'];
    $SMTPhost = $SMTPData[$AktualSMTP]['host'];
    $SMTPuser = $SMTPData[$AktualSMTP]['felhasznalonev'];
    $SMTPpass = $SMTPData[$AktualSMTP]['jelszo'];

    if($TartalekHost != $SMTPhost) {
        $SMTPOnline = 0;
    }
    $TartalekHost = $SMTPhost;

    if($SMTPOnline != 1) {
        $SMTPOnline = 1;
        $smtp =& new Swift_Connection_SMTP($SMTPhost);
        $smtp->setUsername($SMTPuser);
        $smtp->setPassword($SMTPpass);
        $swift =& new Swift($smtp);
    }

    $Targy = $Data['targy'];
    $Cimzett = $Data['ugyfel_emailcim'];
    $Body = $Data['body'];

    $Hiba = $Data['hiba'];
    if($Hiba > 4) {
        $KiirniSz = 'HIBA! 5 alkalommal sem sikerült kiküldeni neki: '.$UID.' (KID:'.$KID.', HID:'.$Data['hirlevelek_id'].')';
        Kiir($KiirniSz);
        ModifySQL('hirlevel_kuldes', 'kikuldve="1"', 'hirlevel_kuldes_id = "'.$KID.'"');
    } else {
        if(mail_ellenor($Cimzett)) {
            $message =& new Swift_Message(iconv("UTF-8", "ISO-8859-2", $Targy), '', "text/html", "8bit", "iso-8859-2");
            $message->headers->setCharset("iso-8859-2");
            $message->headers->setLanguage("HU");
            $message->setCharset("iso-8859-2");

            $body =& new Swift_Message_Part(iconv("UTF-8", "ISO-8859-2", $Body), "text/html", "8bit", "iso-8859-2");
            $body->headers->setCharset("iso-8859-2");
            $body->headers->setLanguage("HU");
            $body->setCharset("iso-8859-2");

            $message->attach($body);

            $recipients = & new Swift_RecipientList();
            $recipients->addTo($Cimzett);

            if ($swift->send($message, $recipients, new Swift_Address($FeladoEmail, iconv("UTF-8", "ISO-8859-2", $FeladoNev) ))) {
                ModifySQL('hirlevel_kuldes', 'kikuldve_datum = "'.date("Y-m-d").'", kikuldve="1"', 'hirlevel_kuldes_id = "'.$KID.'"');
                $KiirniSz = $DBa.' OK ('.$UID.')';
                Kiir($KiirniSz);
                $RendOK++;
            } else {
                $RendHiba++;
                $KiirniSz = 'HIBA! Nem sikerült elküldeni: '.$UID.' (KID:'.$KID.', HID:'.$Data['hirlevelek_id'].', HOST:'.$SMTPhost.')';
                Kiir($KiirniSz);
                $Hiba++;
                ($Hiba > 4)
                    ? ModifySQL('hirlevel_kuldes', 'hiba="'.$Hiba.'", kikuldve="1"', 'hirlevel_kuldes_id = "'.$KID.'"')
                    : ModifySQL('hirlevel_kuldes', 'hiba="'.$Hiba.'"', 'hirlevel_kuldes_id = "'.$KID.'"');
            }
        } else {
            $KiirniSz = 'HIBA! Nem e-mail cím: '.$UID.' (KID:'.$KID.', HID:'.$Data['hirlevelek_id'].')';
            Kiir($KiirniSz);
            ModifySQL('hirlevel_kuldes', 'kikuldve="1", hiba="1"', 'hirlevel_kuldes_id = "'.$KID.'"');
        }
    }
    if($DBa >= $KikuldesDB) {
        Kiir('Küldés befejezve. Kiküldve: '.$DBa.' OK: '.$RendOK.' Hiba: '.$RendHiba);
        exit;
    }
}


A Kiir funkció fájlba írja az eredményt.

Előre is köszönöm a segítséget!
 
1

Szolgáltató

Poetro · 2009. Dec. 8. (K), 19.54
Nem lehet, hogy a szolgáltatód nem enged több levelet kiküldeni? Csak mint spam megelőzés okán szoktak ilyen beállításokat tenni, érdemes lehet megkérdezni a hosztoló céget, hogy vannak-e ilyen beállítások érvényben.
2

Tcpdump

janoszen · 2009. Dec. 8. (K), 20.09
Ha a saját géped, markolj meg egy Wiresharkot / tcpflowt és lesd meg, mely része lassú. A legtöbb sima levelezésre használt SMTP szerver nincs optimalizálva nagy mennyiségű levél befogadására. Ebből eredően lehet, hogy a kapcsolatod és ezáltal az egész programod vár mondjuk a spamszűrésre. Egyrészt minimum párhuzamosan kellene küldeni másrészt specializált SMTP szerveren keresztül.
3

Egyik sem :(

gtoma · 2009. Dec. 8. (K), 22.57
Nem a sajátgépen fut, hanem egy webszerveren. Beszéltem a szolgáltatóval szerinte többnek kellene kimennie. spam szűrés céljából annyi van náluk megadva, hogy 10 perc alatt csak 500 lehet kiküldeni.

Ö említette, hogy lehetséges, hogy az smtp szerver elfogadó válaszára vár a swish, és ezért lehet lassú. és hogy talán ez beállítás, de nem találtam róla semmit.
4

Hírlevél

janoszen · 2009. Dec. 9. (Sze), 00.23
Valszeg ők sem hírlevél kiküldésre szánták az SMTP szervert, hanem normál webszerverrel összefüggő levelezésre, nem szeretnék, hogy szétspameljék az IPjüket / IP tartományukat.

Ha hírlevelet akarsz kiküldeni, az megérne külön misét, hogyan lehet azt jól megcsinálni. Például olyan címről semmiképp ne küldj hírlevelet, ami nem létezik és a visszajövő bounceok címeit meg vedd le a listádról. És akkor még jönnek a kevésbé triviális dolgok, mint pl DKIM és a haverjai.
5

Említettem

gtoma · 2009. Dec. 17. (Cs), 17.45
Mint említettem, Ők csak annyiban korlátozzák, hogy 10 perc alatt csak 500 levelet engednek kiküldeni.

De ezek szerint nem találkozott még senki hasonlóval... :(