Napi api: Batch API

The spam filter installed on this site is currently unavailable. Per site policy, we are unable to accept new submissions until that problem is resolved. Please try resubmitting the form in a couple of minutes.
Kategória: 
Leírás
Napi api: Batch API

Well, talán harmadjára futok össze a batch apival, és még mindig nem volt zökkenőmentes a barátság, szóval amíg az a betyár sok elem leszalad, amin dolgoztam, levésem gyorsan a tudnivalókat, hogy legközelebb már ne kelljen megint mindenre rájönni.

No akkor batch api:

A batch kötegelt feldolgozást jelent. Drupalon belül úgy is mondhatjuk, hogyha egyszerre annyi adattal kell dolgozni, ami túlnő egy oldalletöltés korlátjain, akkor kell a batch apihoz nyúlni. A képet megnézve valószínű egyébként, hogy egyből leesik, a Drupal melyik részéről is van szó.

Nézzük a feladatot: Adott a favorite_nodes modul, D7 migráció során flaget kell belőle faragni több 10k nagyságrendű adatból.

A batch api maga két fő részből áll. Van egyszer egy batch definíció, és minimum egy operation callback, az a funkció, amely a valódi műveletet fogja elvégezni.

Így néz ki nagyjából egy batch definíció:

[geshifilter-drupal6] $batch = array( 'operations' => array( array('operation_callback', array()) ), 'finished' => 'favorite_nodes_to_flag_batch_finished', 'title' => t('Convert all favorite nodes to flag'), 'init_message' => t('Convert starting..'), 'progress_message' => t('Processed @current out of @total.'), 'error_message' => t('Hmm.. Something could be wrong, sorry, post an issue to module..'), );[/geshifilter-drupal6]

Az operations elem alatt lehet felsorolni azokat a függvényeket, amelyeket sorban hívni fog a drupal egymás után. Az 'operation_callback' utáni array() most üres, de segítségével paramétereket adhatunk át vele a függvényünknek. Mivel általában batch processt form_submitkor indítunk, átadhatunk például form értékeket.

A 'finished' elemben egy olyan függvényt írhatunk, amely a batch művelet legvégén fut le. Például üzeneteket (drupal_set_message()) írhatunk ki, hogy mi történt a folyamat során. Figyi, ez nem array, ebből csak egy van!

Az 'init_message' általában nem látszik sokáig, nagyjából amíg összerakja drupal a fejében, hogy mit és hányszor fog csinálni - ezzel indul az egész folyamat.

Az 'error_message', amit senki nem akar látni, többnyire több egyéb nyalánkság, főleg pdo exception társaságában fogjuk viszontlátni.

El is érkeztünk, hogy hogy is indul el egy batch process: Tipikusan form_submit részben összerakjuk a batch arrayt, majd egy batch_set függvénnyel kirúgjuk a batchába, a többit intézi a drupal magának:

[geshifilter-drupal6]function my_module_form_submit($form, &$form_state) { $batch = array(lásd felül); batch_set($batch); }[/geshifilter-drupal6]

Ezzel elkezdődik az operation része a batchnek. Ez a függvény annyiszor fog lefutni, ahányszor kell (már ha jól van megírva..)
Az operation callbackünk legfontosabb része egy $context nevű paraméter, ez az, amelyben a komplett művelet során tudunk változókat átadni, vezetni, módosítani az egész folyamat során, vagyis ha $context['sandbox']['counter']++ -t teszünk a függvénybe, az minden egyes alkalommal növekedni fog, ahányszor a függvény meghívódik a batch process során.

Ennek a $context paraméternek a következő részeit állítgathatjuk:

$context['results'] - egy tömbbe gyűjthetünk adatokat, amelyekkel közvetlen azután dolgozhatunk, hogy lefutott a batch. Ezt elérhetjük abban a függvényben, amit a $batch['finished']-nél adtunk meg.

$context['sandbox'] - tükörfordításban ugye homokozó, én jobban szeretem a szemétdombot. Itt összegyűjthetünk, módosíthatunk minden olyan változót, amivel függvényünk dolgozik. Például ahogy fentebb is volt már, hogy hányszor futott a process.

$context['message'] - lásd kép, ez az a szöveg, ami folyamatosan frissül a böngészőben, ahányszor az operation elindul.

$context['finished'] - Hogy hány %-nál jár a művelet. Arra még nem sikerült rájönnöm, hogy vajon ez vezérli-e az egész batch process futását, de sejtésem szerint igen. Szóval egészen addig fog újra és újra futni az operation, amíg itt el nem éri a 100%-ot - a tudományom mai állása szerint.

Nézzünk egy ilyen függvényt, és magyarázzunk:

[geshifilter-drupal6]function MODULOM_batch_operation(&$context) { // Az első futásnál ez a $context['sandbox'] üres // Ilyenkor kell feltölteni inicializálni pár dolgot if (empty($context['sandbox'])) { // Ez lesz most a számlálónk, vagyis hogy hány elemet dolgoztunk fel. $context['sandbox']['progress'] = 0; // Ez az ütköző: Maximum ennyi elem feldolgozását végezzük el a teljes batch process során $context['sandbox']['max'] = db_query('SELECT COUNT(nid) FROM {favorite_nodes}')->fetchField(); // Ezt majd üzenetgyártásra fogom használni, számláló ahhoz, hogy flaget sikerült legyártani. $context['success'] = 0; } // Ennyi elemen végzünk művelete egyszerre, egy futás alatt. $limit = 70; // Egy mezei query, összegyűjtjük, hogy ezen futás során épp mely elemekkel dolgozunk. // Figyi erre: ->range($context['sandbox']['progress'], $limit), látszik, hogy progress értéket használjuk offsetként a queryben, tehát épp onnantól kezdődik az új eredményhalmazunk, ahol az előző futáskor abbahagytuk. $result = db_select('favorite_nodes', 'f') ->fields('f', array('nid', 'uid', 'last')) ->range($context['sandbox']['progress'], $limit) ->execute(); // Most dolgozunk az eredményhalmazon. foreach ($result as $row) { // Először növeljük a progresst. $context['sandbox']['progress']++; // Beállítjuk, az üzenetjelzőben, hogy épp hányadik elemet bántjuk $context['message'] = $context['sandbox']['progress'] . ' item processed.'; // Ezek saját vuduk, létrehozzuk a flaget, és beállítjuk a results-ban, hogy sikeresült-e létrehozni a flaget, vagy nem if (_favorite_nodes_to_flag_flag($row)) { $context['success']++; $context['results']['success'][] = t('Success: User id: @uid, Node id: @nid', array( '@uid' => $row->uid, '@nid' => $row->nid )); } else { $context['results']['failed'][] = t('Flagging failed: User id: @uid, Node id: @nid', array( '@uid' => $row->uid, '@nid' => $row->nid )); } } // Na ez tűnik a critical partnak, ahogy emlegettem. Ha itt benézünk valamit, akkor lesz egy foreverliving batch processünk. Szóval figyeljünk, hogy hogyan állítjuk be az ütközőt. if ($context['sandbox']['progress'] != $context['sandbox']['max']) { $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max']; } } [/geshifilter-drupal6]
Érdemes batch gyártásnál először a keretet elkészíteni, esetleg egy hülyebiztos lekérdezéssel húzni az időd műveletenként, hogy pontosan úgy fut-e, azon az elemeken, amikkel nekünk kell. Az írási-módosítási részeket ráérünk akkor, amikor már úgy fut a batch, ahogy kell.

Ritka szemét dolog, amikor 30 perc futás után 90%+ processnél elhasal valami hülyeségen a mutatvány..

Hozzászólások

c3phbnRvZ2Fib3IuY29t cash

c3phbnRvZ2Fib3IuY29t cash advance money borrowing sites buy zoloft online zoloft buy payday loans las vegas payday loans secured loans payday loans irving tx personal loans for bad credit personal loans with bad credit payday loans austin tx what does cash advance mean owqkoh

c3phbnRvZ2Fib3IuY29t levitra

c3phbnRvZ2Fib3IuY29t levitra levitra for sale order clomid buy clomid cash loans personal loan long term loans loan express payday loan cash money loans credit check free cash loans iiruhfam

c3phbnRvZ2Fib3IuY29t

c3phbnRvZ2Fib3IuY29t cialis

c3phbnRvZ2Fib3IuY29t cialis coupon cialis 20 mg best price short term loans no credit check long term loans for bad credit flagyl antibiotic metronidazole 500mg personal loan comparison loans direct how do payday loans work private loans urirupara

c3phbnRvZ2Fib3IuY29t pay day

c3phbnRvZ2Fib3IuY29t pay day loan payday loans in rock hill sc tadalafil 20mg retail price of cialis payday loans reno nv payday loans for people with bad credit cytotec cytotec cialis 5 mg generic tadalafil uehoxtumo

c3phbnRvZ2Fib3IuY29t loans

c3phbnRvZ2Fib3IuY29t loans direct loans direct zithromax zithromax 250 mg payday loans las vegas pdl loans credit check free payday loans direct lender personal loan bad credit personal loans online lowest price on generic cialis cialis emavuwesu

c3phbnRvZ2Fib3IuY29t what is

c3phbnRvZ2Fib3IuY29t what is payday loan online cash advance direct lenders cialis 20mg price canadian pharmacy cialis levitra and 3 for free levitra 20 mg flagyl metronidazole 500 mg cialis coupon cialis canada iolesi

c3phbnRvZ2Fib3IuY29t propecia

c3phbnRvZ2Fib3IuY29t propecia prescription generic propecia without prescription topamax rx order topamax online online loan application loan money online low doc loans low doc loans cialis ricetta cialis uk metronidazole 500mg antibiotic order flagyl online payday loans fort worth tx payday loans fort worth tx buy azithromycin zithromax uwohad

c3phbnRvZ2Fib3IuY29t buy

c3phbnRvZ2Fib3IuY29t buy prednisone online prednisone 5mg buy prednisone prednisone levitra levitra online buy doxycycline 100mg doxycycline monohydrate 100mg ventolin online buy ventolin inhaler agyleqal

c3phbnRvZ2Fib3IuY29t buy

c3phbnRvZ2Fib3IuY29t buy amoxicillin online amoxicillin buy payday loans cash advance loans topamax bipolar topamax trigeminal neuralgia money loans loans for people with bad credit cheep topamax buy topamax online imazej

c3phbnRvZ2Fib3IuY29t nexium

c3phbnRvZ2Fib3IuY29t nexium 40mg nexium alternative payday loans direct lender payday loans unsecured loans payday loans near me payday loans victoria bc speed cash loan cialis generic cialis lend money online quick cash eqamei

c3phbnRvZ2Fib3IuY29t personal

c3phbnRvZ2Fib3IuY29t personal loans cash advance levitra generic levitra generic bad credit loan what is an unsecured loan buy cytotec where to buy cytotec online loans with bad credit fast loans online barr labs generic finasteride buy propecia celebrex buy celebrex uwoqem

c3phbnRvZ2Fib3IuY29t no

c3phbnRvZ2Fib3IuY29t no credit check payday loans payday loans amoxicillin buy amoxicillin canadian pharmacy cialis 20mg cialis lasix on line lasix short term loans bad credit no employment verification personal loans loans for people with bad credit signature loans augmentin with diflucan diflucan oral oqozix

c3phbnRvZ2Fib3IuY29t brand

c3phbnRvZ2Fib3IuY29t brand zithromax where to buy azithromycin personal loans online personal loans ohio loans for people with bad credit bad credit loans metronidazole 500 mg buy flagyl online national payday loan easy payday loans cytotec buy cytotec oharznuj

c3phbnRvZ2Fib3IuY29t bactrim

c3phbnRvZ2Fib3IuY29t bactrim for sale buy bactrim nexium online nexium buy osyrol lasix furosemide online witho... lasix buy trimethoprim but bactrim payday loans personal loan rates eferueduz

c3phbnRvZ2Fib3IuY29t buy

c3phbnRvZ2Fib3IuY29t buy xenical xenical orlistat amoxicillin 500mg capsules for sale amoxicillin buy online tadalafil 20 mg cialis generic 20 mg small cash loans long term loans for bad credit personal loans online payday loans topamax buy topamax online generic cialis 20mg generic cialis 20mg payday loans loans today levitra 20 mg online online levitra oriqfa

Ebenso ideal: Mitglied bei

Ebenso ideal: Mitglied bei Amnesty International oder Greenpeace zu sein.

c3phbnRvZ2Fib3IuY29t cialis

c3phbnRvZ2Fib3IuY29t cialis cialis 5mg retin a cream retin a generic cialis at walmart cialis buy synthroid on line synthroid liquid money fast no credit check personal loans uefejumo

c3phbnRvZ2Fib3IuY29t

c3phbnRvZ2Fib3IuY29t

c3phbnRvZ2Fib3IuY29t doxycycline mono 100mg doxycycline and celiac disease buy strattera buy strattera online buy cialis generic cialis fast loans for bad credit self employed personal loans buy zoloft online zoloft reduction uyusej

c3phbnRvZ2Fib3IuY29t cialis

c3phbnRvZ2Fib3IuY29t cialis on line generic cialis at walmart doxycycline 100 mg doxycycline hyclate topiramate on line topiramate online purchase generic cialis cialis viagr canada personal loan bad credit payday loans payday advance payday advance zithromax treatment zithromax ofosduxoq

c3phbnRvZ2Fib3IuY29t apply

c3phbnRvZ2Fib3IuY29t apply for a loan online loans direct canadapharmacy.com canadian pharmacy online drugstore easy loans poor credit personal loans levitra pills canada generic levitra 20mg online personal loan payday loans tadalafil 20 mg best price cialis20mg buy nolvadex online where to buy nolvadex price of cialis 20mg cialis direct loan servicing center las vegas payday loans no credit check ixuosuy

c3phbnRvZ2Fib3IuY29t amoxil

c3phbnRvZ2Fib3IuY29t amoxil 500 mg amoxicillin no prescription cash loans loans for bad credit strattera buy strattera online need money fast payday advance online 5000 loan payday loans zoyiqead

c3phbnRvZ2Fib3IuY29t zoloft

c3phbnRvZ2Fib3IuY29t zoloft for men generic zoloft best payday loans payday loans topamax online topamax weightloss orlistat 120 mg orlistat without a prescription cialis canada cialis 20 mg lowest price priligy with cialis in usa el priligy prednisone prednisone buy ventolin inhaler buy ventolin inhaler adogog

c3phbnRvZ2Fib3IuY29t short

c3phbnRvZ2Fib3IuY29t short term loans florida payday loan lenders only no credit checks levitra levitra generic levitra genericlevitra20mg buy ciprofloxacin ciprofloxacin 500mg antibiotics cialis cialis tadalafil 20 mg buy cialis tribal loans instant cash loans 365 day loan payday loans no credit check oraneb

Ihr Bauchfett hängt ein gutes

Ihr Bauchfett hängt ein gutes Stück über den Hosenbund!

c3phbnRvZ2Fib3IuY29t

c3phbnRvZ2Fib3IuY29t vardenafil 20mg levitra loan express quick loans celebrex 200 mg no prescription celebrex 200 mg no prescription buy furosemide buying lasix on line payday advance personal loan propecia generic order propecia online lasix online lasix cialis 20 mg cialis bisukuha

c3phbnRvZ2Fib3IuY29t lasix no

c3phbnRvZ2Fib3IuY29t lasix no prescription lasix on line cialis canada canadian cialis levitra what is vardenafil payday loans plano tx ohio cash advance purchasing prednisone order prednisone online cialis generic cialis 20 mg payday loans direct lenders secured loan check my credit check my credit udelyaiwf

c3phbnRvZ2Fib3IuY29t borrow

c3phbnRvZ2Fib3IuY29t borrow money payday loans online cialis uk cialis 20 mg price levitra online vardenafil generic cialis generic cialis from india tretinoin cream 0.05% retin a cream 0.1 cash advance online loans with no credit buy cialis online canada cialis.com lowest price emjubu

I blog quite often aand I

I blog quite often aand I really appreciate your content.

Your article has truly peaked my interest. I will book mark
your blog and keep checkong for new details about oce peer
week. I opted in for your Feed too.

c3phbnRvZ2Fib3IuY29t online

c3phbnRvZ2Fib3IuY29t online payday loans personal loan bad credit accutane buy accutane lawyers southern california fluconazole order diflucan no prescription propecia canada generic propecia uk buy levitra online levitra 20 mg okuguyees

c3phbnRvZ2Fib3IuY29t la

c3phbnRvZ2Fib3IuY29t la doxycycline buy doxycycline 100mg cialis price 5mg cialis direct cash simple interest loan online levitra levitra tadalafil 20 mg generic cialis aehenovof

c3phbnRvZ2Fib3IuY29t nexium

c3phbnRvZ2Fib3IuY29t nexium nexium generic payday loans get a loan bad credit loans need cash now where to buy azithromycin buy zithromax online buy clomidaphine ncitrate buying clomid online ixudimul

c3phbnRvZ2Fib3IuY29t payday

c3phbnRvZ2Fib3IuY29t payday loans irving tx instant approval personal loans payday loan lenders payday loans loan application personal loans with bad credit pharmacy on line pharmacy online payday advance payday loans flagyl metronidazole online cobalt ciprofloxacin cipro sale of levitra levitra 20mg generic propecia without prescription generic propecia without prescription etjdom

c3phbnRvZ2Fib3IuY29t accutane

c3phbnRvZ2Fib3IuY29t accutane accutane low doc loans low doc loans doxycycline hyclate 100mg doxycycline monohydrate 100mg best loans secured loan how to get a loan with bad credit how to get a loan with bad credit who will give me a loan with bad credit interest free loan apotihan

Szántó Gábor Drupal oldala -

Szántó Gábor Drupal oldala - Napi api: Batch API
Parajumpers Jakke Salg http://www.parajumpers-jakke-norge.com/

Szántó Gábor Drupal oldala -

Szántó Gábor Drupal oldala - Napi api: Batch API
canada goose jackets http://www.canadagoose-us.com/canada-goose-men-c-1/

c3phbnRvZ2Fib3IuY29t

c3phbnRvZ2Fib3IuY29t loans

c3phbnRvZ2Fib3IuY29t loans for bad credit payday loans cialis tablets cialis cialis generic cialis online payday loans quickloans levitra professional levitra otileuwi

Szántó Gábor Drupal oldala -

Szántó Gábor Drupal oldala - Napi api: Batch API
canada goose jackets http://www.canadagoose-us.com/canada-goose-men-c-1/

c3phbnRvZ2Fib3IuY29t personal

c3phbnRvZ2Fib3IuY29t personal loans for bad credit unsecured personal loans money loans quick payday loans generic propecia without prescription propecia without prescription levitra levitra prices 20 gm free delivery unsecured loans loans for people with bad credit payday loans no fees payday loans ijodedoj

c3phbnRvZ2Fib3IuY29t levitra

c3phbnRvZ2Fib3IuY29t levitra online www.levitra.com salbutamol inhaler buy online ventolin hfa bactrim without prescription bactrim no prescription payday loans lubbock studen loans cialis 20mg coupons cialis online bactrim without a prescription bactrim fast cash payday loans azithromycin 250 mg zithromax buy cytotec online where to buy cytotec online aqogdo

Szántó Gábor Drupal oldala -

Szántó Gábor Drupal oldala - Napi api: Batch API
Parajumpers salg norge http://www.parajumpers-jakke-norge.com/

c3phbnRvZ2Fib3IuY29t propecia

c3phbnRvZ2Fib3IuY29t propecia online propecia buy online get a loan today instant loans tadalafil tadalafil prednisone no prescription buy prednisone online payday loans in va pay day loan canada cialis cialis prevent heart disease eonuukhod

Szántó Gábor Drupal oldala -

Szántó Gábor Drupal oldala - Napi api: Batch API
roger vivier sale http://www.rogervivierparis.com/roger-vivier-pumps-c-3.html

Szántó Gábor Drupal oldala -

Szántó Gábor Drupal oldala - Napi api: Batch API
mackage sale http://www.mackagesale.com/mackage-men-c-1/

c3phbnRvZ2Fib3IuY29t bactrim

c3phbnRvZ2Fib3IuY29t bactrim online bactrim online guaranteed payday loans fast loans online cialis 5 mg best price usa generic cialis lowest price payday loans payday loans 2000 dollar loan payday advance osebikupu

Szántó Gábor Drupal oldala -

Szántó Gábor Drupal oldala - Napi api: Batch API
canada goose jackets http://www.canadagoose-us.com/canada-goose-men-c-1/

Szántó Gábor Drupal oldala -

Szántó Gábor Drupal oldala - Napi api: Batch API
Parajumpers Jakke norge http://www.parajumpers-jakke-norge.com/

c3phbnRvZ2Fib3IuY29t cialis

c3phbnRvZ2Fib3IuY29t cialis 20mg cialis canada how to get a loan with no credit guarantor loans buy propecia propecia generic metronidazole 500 mg antibiotic buy metronidazole cash loan online cash advance miami awaeswuve

Hozzászólás

A mező tartalma nem nyilvános.
  • Internal paths in double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or relative path.
  • Engedélyezett HTML elemek: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <del> <img>
  • A webcímek és email címek automatikusan linkekké alakulnak.
  • A sorokat és bekezdéseket a rendszer automatikusan felismeri.
  • Engedélyezett HTML elemek: <a> <blockquote> <br> <cite> <code> <dd> <del> <div> <dl> <dt> <em> <li> <ol> <p> <span> <strong> <ul>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <bash>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <mysql>, <php>, <python>, <ruby>, <sql>. The supported tag styles are: <foo>, [foo].
  • Minden email cím át lesz alakítva ember által olvasható módon, vagy (ha a JavaScript engedélyezett) ki lesz cserélve kattintható, de biztonságos hivatkozásra.