Mo!
Tämä kaatuu jos firmoja on esim 70 kpl. Mutta miksi?
#!/usr/bin/php <?php ini_set('memory_limit' ,'128M'); ini_set("max_execution_time", "0"); set_time_limit(0); require("library/init.php"); $subject = "Jotain"; $viesti = "Hei,\n"; $viesti .= $viestit[$data["viestityyppi"]][1]; $viesti .= "\n\nYstävällisin terveisin:\n\n"; $viesti .= $data["nimi"] . "\n"; $viesti .= $data["osoite"] . "\n"; $viesti .= $data["postinum"] . "\n"; $viesti .= $data["toimipaikka"] . "\n"; $viesti .= "Henkilötunnus: " . decrypt($data["htunnus"], $data["sarja"]) . "\n"; $viesti .= $data["puh"] . "\n"; $headers = 'From: ' . $data["sposti"] . "\r\n"; $headers .= 'Content-type: text/plain; charset=UTF-8' . "\r\n"; foreach($firmat as $firma) { if(!mail(trim($firma["sahkoposti"]), $subject, wordwrap($viesti, 70), $headers)) { throw new Exception ("En voinnut lahettaa viestia osoitteeseen: " . $firma["sahkoposti"] . " id:" . $data["id"]); } sleep("5"); } ?>
Määrittele "kaatuu".
Onko palvelimelta oikeasti estetty, ettei skriptejä voida ajaa noin kauaa (+5 min). Tähänhän ei silloin paljon php:n time_limitit auta
Prosessi kaatuu eli kuolee, se kaatuu ainoastaan "kuormituksen alla", eli kun pommitetaan viestejä. Se on jatkuvasti taustalla käynnissä.. while(1)..
Tarkoittaako kaatuminen ehkä sitä, että mail-funktio epäonnistuu ja tulee tuo koodiin kirjoitettu poikkeus? Jos palvelin ei ole omasi (tai vaikka olisikin), on aika todennäköistä, että sähköpostin massalähetystä on jotenkin rajoitettu.
Metabolix kirjoitti:
Tarkoittaako kaatuminen ehkä sitä, että mail-funktio epäonnistuu ja tulee tuo koodiin kirjoitettu poikkeus?
Ei, se ei "kaadu" poikkeukseen, vaan satunnaisesti lakkaa toimimasta ja ps -A | grep 'mailer.php' on tyhjä. Eli prosessi on kaatunut/sammunut/kuollut.
Jos on palvelu, jonka tarkoitus on lähettää keskitetysti postia. (Ei spammia). Miten muuten sitä voisi toteuttaa? Onko pear vakaampi?
Miten siis olet käynnistänyt tuon, ja onko ihan mahdoton ajatus debugata sitä kaatumista itse esim. lisäämällä skriptiin tulosteita ja katsomalla, mihin kohti loppuu?
./mailer.php >/dev/null &
Eli scripti tarkistaa ja poimii mahdolliset front-endin kautta syötetyt "mailaus-pyynnöt".
Ym. scripti mailaa "sarjan", menee takaisin nukkumaan hetkeksi 10 min.
Härettyään se tarkistaa onko tullut uusia mailaus pyyntöjä.
Se toimii Noin 30 firman kanssa. Heti kun nostin lukua 70, niin alkoi kaatuilu..
Voiko olla että sendmail suuttuu php:lle, ja sanoo että ei enää viestejä kiitos?
Metabolix kirjoitti:
.. onko ihan mahdoton ajatus debugata sitä kaatumista itse esim. lisäämällä skriptiin tulosteita ja katsomalla, mihin kohti loppuu?..
pitää kokeilla..
Jos laittaisit vain ./mailer.php ilman lisäjuttuja ja säätäisit PHP:n kaikki mahdolliset virheilmoitukset käyttöön ja näkyviin, skripti ehkä kertoisi, mikä meni pieleen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.