Autor Zpráva
Medvídek
Profil
Zdravím,
řeším, jak nejoptimálnějši vyřešit následující věc:
Mám nějaký systém provizí, který se generuje z DB a na konci měsíce se posílají emaily s fakturama. Dejme tomu mam za měsíc 800 provizí pro 160 různých firem. Je nutnost, odeslat provize na jedno stisknutí tlačítka. Bohužel provize se exportují do PDF, CSV a odesílají s přílohama na 4 různé emaily a ještě se zapisuje výsledek do db. Nyná to je děláno v jednom jediném souboru, přičemž za poslední měsíc (listopad) trvala celá tato akce 4x 10minut. Prostě po 10 minutách spadl timeout skriptu a odeslalo se třeba prvních 48 firem. Poté se zase muselo stiknout tlačítko a opět 10 minut co se stihne odeslat.
To mi nepřijde jako nejlepší řešení, proto mě napadlo, odesílat to po zmáčknutí postupně ajaxem, firmu po firmě. Můj nápad by byl asi takovýto:

Výpis firem:

 Firma - rel=2 id=1
 - provize
 - provize
 - provize

   Firma 2 - rel=3 id=2
 - provize
 - provize

   Firma 3 - rel=0 id=3
 - provize
 - provize

button onclick=odeslat_provize(1);

Poté JS funkce na odesílání, kde by se v paramteru jen odesílalo, kterou firmu má aktuálně dělat a tu bych bral z paramteru rel. Pokud by v rel nebyla 0, tak po odpovědi z AJAXového volání by se spustila stejná funkce s parametrem ID další firmy.

function odeslat_provize(firma){
 var dalsi_firma = $("#firma"+firma).attr('rel');
 ajax(){
  success(){
   if(dalsi_firma !=0){
    odeslat_provize(dalsi_firma);
   }
  }
 }
}

Jaký na to máte názor, dalo by se to řešit nějak ještě automatičtěji?
kajaman
Profil
Medvídek:
IMO je nesmysl do odesílání hromadného mailu tahat opakovaně komunikaci s prohlížečem. Celou tu hromadu bych rozděli na dávky, které server bezpečně zvládne a po spuštění ze strany uživatele už bych to nechal odpálit cronem jednu po druhé třeba s odsupem 5 min.
Medvídek
Profil
kajaman:
Ono nakonec to dopadne asi tak, že si ty maily nacpu do messengeru, kterej si stavim, kterej pak samozřejmě bude fungovat, že bude dávkově odesílat. Ale nejhorší je generování toho PDFka, který pro jednu firmu trvá třeba i 16 vtřein, proto to nelze udělat na jeden zátah a ten ajax volím hlavně kvůli tomu zpracování PDF (odeslání emailu je vedlejší, to už netrvá tak moc).
Navíc uživatel potřebuje vidět, že se to na ten a ten mail (popř. PDF vygenerovalo) odeslalo, takže mi nepomůže, že se to udělá během hodiny pomocí CRONU, on to potřebuje vidět na skle.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0