Eredmény: 1 - 10 (10) összesen

Téma: Email kuldes user altal megadott idopontban

  1. #1
    Bölcs
    Csatlakozott
    11-03-05
    Hely
    UK
    Hozzászólás
    500
    Begyűjtött 66 köszönetet
    52 hozzászólásával

    Alapbeállítás Email kuldes user altal megadott idopontban

    Egy rendszeren dolgozok ahol a servernek a user altal megadott idopontban email-t kellene kuldenie, ha nincs megadva idopont akkor pedig ejfelkor minden nap.
    Ezt en szemely szerint ugy csinalnam, hogy a user az email kuldes idejet 5 perces intervallumokban adhatja meg (pl: 10:05, 10:10, 10:15-kor...stb) es 5 percenkent cron-al ellenoriznem,h kell -e emailt kuldeni. Viszont igy ugye 5 percenkent cron fut a serveren.
    Van erre valami jobb megoldas?!
    Olyasmire gondolok, hogy lehet olyat, hogy egyszer elinditok egy scriptet a serveren es az fut allandoan es ellenoriz 5 percenkent vagy ilyesmi.
    Vagy a cron x-idokozonkent kikerulhetetlen?


    Notex az online notesz, linkkatalógus, tartalommegosztó és még sok más...

  2. #2
    Bölcs earnnet logója
    Csatlakozott
    12-08-15
    Hely
    Budapest
    Hozzászólás
    1.536
    Begyűjtött 690 köszönetet
    488 hozzászólásával

    Alapbeállítás re: Email kuldes user altal megadott idopontban

    Nem kell ehhez cron. Elindítasz egy háttérben futó folyamatot. Egy php szkriptet mondjuk. A szkript 1 perces intervallumonként csekkolja, hogy a mostani idő >= kért idő. Utána már csak egy elágazás és oda a kiküldés kódja.

    Valahogy így kell:
    HTML kód:
    php -f email.php &
    PHP kód:
    while(true){

    // $legkozelebbi_email_idopontja-t sql lekérdezéssel beállítod, select MIN(időpont) bla bla

    if(time() >= $legkozelebbi_email_idopontja ){
    // levélküldés itt
    }

    sleep(60000); // 1 perc





    Utoljára módosítva: earnnet által : 2016-01-01 17:33

  3. Az alábbi felhasználók hálásak a válaszért:

    frankcrk (2016-01-01)

  4. #3
    Bölcs
    Csatlakozott
    11-03-05
    Hely
    UK
    Hozzászólás
    500
    Begyűjtött 66 köszönetet
    52 hozzászólásával

    Alapbeállítás re: Email kuldes user altal megadott idopontban

    Idézet earnnet eredeti hozzászólása Hozzászólás megtekintése
    Nem kell ehhez cron. Elindítasz egy háttérben futó folyamatot. Egy php szkriptet mondjuk. A szkript 1 perces intervallumonként csekkolja, hogy a mostani idő >= kért idő. Utána már csak egy elágazás és oda a kiküldés kódja.

    Valahogy így kell:
    HTML kód:
    php -f email.php &
    PHP kód:
    while(true){

    // $legkozelebbi_email_idopontja-t sql lekérdezéssel beállítod, select MIN(időpont) bla bla

    if(time() >= $legkozelebbi_email_idopontja ){
    // levélküldés itt
    }

    sleep(60000); // 1 perc



    erre gondoltam en is, marmint, hogy beteszem vegtelen ciklusba, de nem fogja a server idotullepes miatt leallitani a scriptet egy ido utan? vagy ha beledobok egy set_time_limit(0)-et, az megoldja ?


    Utoljára módosítva: frankcrk által : 2016-01-01 17:39

  5. #4
    Tag
    Csatlakozott
    15-02-03
    Hozzászólás
    72
    Begyűjtött 24 köszönetet
    23 hozzászólásával

    Alapbeállítás re: Email kuldes user altal megadott idopontban

    Sleep nem számít a futási időbe. Hátránya, hogy foglalja a memóriát.



  6. #5
    Bölcs earnnet logója
    Csatlakozott
    12-08-15
    Hely
    Budapest
    Hozzászólás
    1.536
    Begyűjtött 690 köszönetet
    488 hozzászólásával

    Alapbeállítás re: Email kuldes user altal megadott idopontban

    Amikor megtörténik a lekérdezés, lesznek ugyan új változók és foglalt memória, de ezek invalidálódnak (és ezzel felszabadítják a memóriát), amint a vezérlés a blokk végére ér. De ha nem bízol benne, ott van még az unset.

    Tehát van egy ciklusmagod n-es tárigénnyel (ott már elágazásokkal mindent meg lehet oldani) és esetleg előtte egy sql kapcsolat létrehozás konstans tárigénnyel. De semmiképp sem négyzetes, így biztos nem fogja felemészteni a memóriát. Ha nincsenek benn globális változók, szivárogni se fog.


    Utoljára módosítva: earnnet által : 2016-01-02 16:23

  7. #6
    Törzsvendég
    Csatlakozott
    08-01-09
    Hely
    Hungary
    Hozzászólás
    175
    Begyűjtött 44 köszönetet
    35 hozzászólásával

    Alapbeállítás re: Email kuldes user altal megadott idopontban

    Miért nem jó a cron?

    Csak egy egyszerű időzített futtatás. Vagy tévedek?



  8. #7
    Bölcs earnnet logója
    Csatlakozott
    12-08-15
    Hely
    Budapest
    Hozzászólás
    1.536
    Begyűjtött 690 köszönetet
    488 hozzászólásával

    Alapbeállítás re: Email kuldes user altal megadott idopontban

    Miért nem jó a cron?
    Nagyobb az erőforrásigénye és nem megbízható. Pl. cronnal minden futtatáskor létre kell hozni és bezárni a mysql kapcsolatot. Ha valamilyen egyéb túlterheltségi okból ez a vártnál több időt vesz igénybe, előfordulhat, hogy több folyamat egyszerre akarja magának az adatbázist, és dead lock alakul ki. Ez persze nem valószínű, de előbb-utóbb be fog következni, ha egy kampány miatt hirtelen több látogató lesz. Mi pedig azt szeretnénk, ha a szélsőséges esetekben se fagyna le a mysql.



  9. Az alábbi felhasználók hálásak a válaszért:

    builder (2016-01-03)

  10. #8
    Bölcs
    Csatlakozott
    07-08-28
    Hozzászólás
    1.024
    Begyűjtött 146 köszönetet
    105 hozzászólásával

    Alapbeállítás re: Email kuldes user altal megadott idopontban

    • Egyszerü osztott tárhelyennem futtathatsz daemont
    • A mysql zárja a kapcsolatokat (interaktiv timeout)
    • A daemon megirása, újra indítása, debugolása sokkal nehezebb mint egy egyszerü parancssori php file-nak
    • A daemon futását ellenőrizni kell valamivel, hiszen bármilyen okból megálhat
    • A több daemon párhuzamos futását szintén ki kell zárni
    • A php daemon módban hajlamos memory leak-eket produkálni. Van olyan rendszer most a kezem alatt ahol 4 szerveren kb 1000 php-ban megirt damon fut, mindegyik folyamatosan nézi a használt memória méretét, és ha túl lép egy limiten, akkor leállítja magát.


    Szóval szerintem az 5 percenként bekérdezel a db-be, hogy mit kell kiküldeni az bőven egyszerübb mint egy daemont megirni



  11. #9
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.607
    Begyűjtött 1.334 köszönetet
    829 hozzászólásával

    Alapbeállítás re: Email kuldes user altal megadott idopontban

    Idézet TLoF eredeti hozzászólása Hozzászólás megtekintése
    • A daemon megirása, újra indítása, debugolása sokkal nehezebb mint egy egyszerü parancssori php file-nak
    • A daemon futását ellenőrizni kell valamivel, hiszen bármilyen okból megálhat
    • A php daemon módban hajlamos memory leak-eket produkálni. Van olyan rendszer most a kezem alatt ahol 4 szerveren kb 1000 php-ban megirt damon fut, mindegyik folyamatosan nézi a használt memória méretét, és ha túl lép egy limiten, akkor leállítja magát.
    Ezeket god-al(God - A Process Monitoring Framework in Ruby) eleg egyszeru managelni, viszont en is ugy gondolom, hogy erre egy cron az idealis megoldas, vagy esetleg reactphp(React), amiben gondolom van valamilyen next tick event es azon le lehet kerdezni az azon a percen belul kuldendo emailek listajat.


    If debugging is the process of removing software bugs, then programming must be the process of putting them in.
    Github Rake tutorial
    Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime.
    Respect all, fear none

  12. Az alábbi felhasználók hálásak a válaszért:

    earnnet (2016-01-03)

  13. #10
    Bölcs earnnet logója
    Csatlakozott
    12-08-15
    Hely
    Budapest
    Hozzászólás
    1.536
    Begyűjtött 690 köszönetet
    488 hozzászólásával

    Alapbeállítás re: Email kuldes user altal megadott idopontban

    // a react egzotikus meg minden, de akinek ilyen igényei vannak, ideje kinőnie a phpból



Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •