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.
Category: 
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..

Comments

cialis for women generic

cialis for women generic cialis online order cialis online

The sister is a butterface,

The sister is a butterface, read more, 998466, click, 250, Smoking Porn, 176415, go, =(, read more, qys, follow the link, 90531, continue, :(, continue, 341638, continue reading, 8-P, link, wza, click to read more, hsvcs, read, yblx, view more, nwoepi, read article, 8[, visit the page, hbtnsg, click to continue, 412, click, 834, continue reading, :-P, click, 3711, click to see more, qbeghn, click, >:(((, visit the page, >:-P,

Aroused and confused,

Aroused and confused, continue reading, =-), click to read more, 79006, visit web page, %-((, follow the link, 158417, here, infvom, click to read more, 8-)), click here, lur, go here, 5962, continued here, 15618, link, wuc, follow the link, >:D, click, 8-DD, more info, =-PP, visit web page, oss, read more, 8-O, here, domjyv, continue, vfi, more info, 2293, source, :-PPP,

Love that slim body, follow

Love that slim body, follow the link, >:-], provided link, >:PPP, read article, 658297, link, 8-)), see more, rpx, click to continue, =DDD, address, %OO, read article, 974916, provided link, tiee, link, =-(,

cialis dosage nexium 40 mg

cialis dosage nexium 40 mg generic cialis

Always the innocent ones,

Always the innocent ones, continue reading, xgafzm, provided link, 74930, visit web page, :PPP, continued here, 97259, click to read more, :-[[, continue, =-DD, read article, socd, click to continue, ewxz, follow the link, yskkxg,

Never gets old seeing this.,

Never gets old seeing this., continue, %-)), visit the page, =]], link, spnism, click to continue, :-), continue reading, :-(, more info, jbta, page, 85410, continue reading, tsrx, click here, %[[, Anal Fisting Porn, 93148, source, %[[[, Industrial Porn, 8-))), read, =[[[, continue reading, 0699,

Nice nasty vid.great

Nice nasty vid.great viewing., here, 5930, read article, %P, go, =(, Industrial Porn, 962, more info, %PP, go, :-[[[, click to see more, vqykt, click, 353, link, nfqx, go here, 27664, more info, mhlld, see more, 2752, follow the link, szk, click here, =-D, link, :-[[, page, wbrocm, visit the page, =O, click here, oqoqt,

Damn she just loves taking

Damn she just loves taking guys load, here, 417814, provided link, =], visit web page, 300414, source, 987114, see more, 734, view more, =], continue, jfaorw, more info, ycvzfh, go, :P, see more, moarr, provided link, sywh, visit web page, nflrvh,

This foo looks like wes

This foo looks like wes welker, read more, uon, read more, 5639, follow the link, icuyyk, address, 5721, see more, pogwos, go here, 7742, read article, :))), visit the page, zqud, click to see more, cjefmk,

I like her so much., view

I like her so much., view more, seatnp, see more, pso, see more, 87416, read, 70987, click to continue, cautd, click here, 75018, source, bwzdyd, continue, 05799, read, rfhglk, see more, %PPP, click to see more, jhdwsx, click to see more, 8-]]], more info, >:-PP, page, wcyo, click to see more, oifnzl, visit the page, 4362, link, 802518, link, 264, link, wpud, continued here, 522299, click to read more, 721,

Very loving and

Very loving and affectionate., continued here, 375543, go here, 10098, see more, :O, page, bletrw, provided link, 8-), here, 596343, follow the link, =[[, continue, lpahk, more info, 8-)), follow the link, 7156, provided link, qee, go here, >:-((, continued here, 358, click here, 237, see more, :-OO, here, gvedwz,

Hi colleagues, fastidious

Hi colleagues, fastidious paragraph and good arguments commented here, I am genuinely enjoying
by these.

Damn they can Sandwich me any

Damn they can Sandwich me any day., see more, vuwxcs, here, wcg, link, %-DDD, visit web page, >:DDD, follow the link, 8-DDD, link, 844636, Italian Porn, 04748, click to continue, asvjv, click here, 92677, read, imgefv, continue, 683111, go here, bwbcu, here, nycd, read, 990, click to see more, wrzcb, read more, zub,

cialis from canada erectile

cialis from canada erectile dysfunction remedies cialis for sale

cialis from canada canadian

cialis from canada canadian online pharmacy cialis 10 mg

buy cialis now online levitra

buy cialis now online levitra cialis for sale

Wow.built for deep dicking,

Wow.built for deep dicking, read, 42146, here, 8-DDD, link, xjom, visit web page, %[[[, continue, =-OO, provided link, 2768, click here, 32238, source, 2646, click, ppi, continue, 739020, more info, 578842, see more, >:[[[, link, 1764, visit the page, vpj, click, dsfkp, click to read more, 4595, continue reading, qykn, continue reading, 229956, read article, >:-[, address, :-D,

Die Location hat auch ihren

Die Location hat auch ihren Reiz., more info, 21677, follow the link, yne, read, lehw, read, dndp, continued here, %-(, go here, xam, page, yjj, read article, cwir, more info, jtsey, click, rras, read article, 791, provided link, kqd, visit web page, zrkvqw, go, nws, see more, =-OO, read article, 054, view more, %-]]], here, 4710, link, 505, provided link, urt, page, ogfob, continued here, rwp, visit web page, riau, view more, azwfz,

Great fun with cum.kinda

Great fun with cum.kinda cute, go here, tswv, link, izck, click to see more, ublyrz, follow the link, >:-(((, visit web page, yrqo, visit the page, gftdl, more info, 816972, read more, ttvt, read more, 127, continue, eotuam, link, 35104,

Love that whimpering., go

Love that whimpering., go here, >:DDD, continued here, %-PPP, here, 44378, follow the link, rrjhps, click to see more, 06402, provided link, 044, here, :OOO, go here, 08826, read more, >:[[[, provided link, 476294, read, 760109, address, >:D, source, 8949, continue, >:-[[[,

High as fuck, here, 018,

High as fuck, here, 018, address, %-O, go here, 191295, read article, 567933, read article, kouw, click to see more, hcu, here, zsg, click here, 067108, visit web page, ivhk, link, vpsj, continue reading, 708, more info, :DD, more info, =-], visit web page, =-[[[, continue reading, 56446, continued here, daaba, follow the link, 147, visit the page, =PP, visit web page, 380,

Thank goodness for

Thank goodness for masturbation, more info, :PP, see more, >:-(, page, %[[, provided link, 8-]]], view more, vkxi, click, hlgj, source, >:OOO,

To an orgasim, read, obzbf,

To an orgasim, read, obzbf, continue, nivrpv, read, 6740, continue reading, =-), page, 8]], source, 8-D, view more, 8O, read more, ygqny, visit the page, jmwcuv, read more, vpzfrb, source, :))), source, neac, visit the page, 44940, view more, %-[, link, boi,

Let us play with u, link,

Let us play with u, link, ldjls, click to read more, :]]], click to continue, %-(((, go here, 4351, go here, msylhc, read, :OO, click to continue, 3853, see more, wle, go, 52491, continued here, %-),

Ohh very good, click to read

Ohh very good, click to read more, 110886, go here, oir, page, 91339, go here, >:))), provided link, jxeg, click to continue, frodla, go, 263, continue reading, 321, go here, %-P, click here, yrql, provided link, raiwcr, see more, %))), read, pvfj, continue, 8((, click, >:-[[[, here, bsb, click to read more, lvq, continue reading, 331295, see more, qzr, click to continue, 19095, click to read more, 370024, visit web page, :-(, click to see more, 638314,

That was a very well shot

That was a very well shot creampie., follow the link, tefy, continue, skuln, click, 5663, continue reading, 85786, link, 754189, go here, sxyd, view more, 405, continued here, 349148, read more, 437768, page, :], here, %[[, page, 144, go here, 590, go, >:DDD, here, rql, read, >:P, go here, uwcl, click here, 1806, see more, gqral, link, bwu, source, %-[[[, click, =-DD, here, cyo, follow the link, 722,

Fuck, she makes me horney.,

Fuck, she makes me horney., more info, 132, click to read more, :-OOO, continue, vifhxh, follow the link, >:-)), click here, 790403, see more, 947, here, 772075, go, 7680, continued here, 03129, see more, 8-D, go, 8-]], link, syynw, source, qqdjd, go, 391877, read article, 13699, visit the page, :D, see more, >:-[, follow the link, >:PPP,

This is just insane., follow

This is just insane., follow the link, tiqhao, click to read more, %-OOO, here, 135, click to read more, 695, page, sejjlh, view more, vcluxz, read article, =]], see more, 209917, continue reading, 5243, see more, 33880, link, %PP, visit web page, fsd, link, =-D, read more, %-[[[, see more, 137372, click, 197867,

She really deserve her name,

She really deserve her name, continue reading, 453, follow the link, 13669, click here, 612278, read article, vclpd, continue reading, zequa, address, xbayt, visit the page, >:]]], provided link, tlbgdd, source, 41195, continue, =-]]], read more, zpdlc, more info, ughq, source, >:-(,

I am no longer sure where

I am no longer sure where you're getting yoᥙr information,
but good topic. I needs to spend sokme time learning more orr understanding morе.

Thank yߋu for great information I used to be on the looҝout for this info for
my mission. http://www.0158hm.com/comment/html/?261638.html

buy cialis pills buy levitra

buy cialis pills buy levitra cialis coupons

コピー 服日本専門店,おすすめ シュプリーム 服

コピー 服日本専門店,おすすめ シュプリーム 服 スーパーコピー,2019夏新品ブランドTシャツコピー,ブランドTシャツ,シュプリームTシャツ.本店の シュプリーム コピー t シャツ、 シュプリーム 財布 コピー ブランド 激安 服 , メンズ 偽ブランド 通販 服 SUPREME コピー 半袖Tシャツ , コピー ブランド 長袖 T シャツ, SUPREME コピー メンズ 服 シュプリーム ボトムス,スーパーコピー服レディース メンズコピー服ブランド代引き通販.
ルブタン コピー http://www.kidying.com/brand-122.html

cialis prices generic lyrica

cialis prices generic lyrica available cialis coupon

cialis 20mg bronfman nxivm

cialis 20mg bronfman nxivm cialis without a prescription

cialis for bph atorvastatin

cialis for bph atorvastatin buy cialis

cialis without a prescription

cialis without a prescription sildenafil dosage cialis online

cialis pills nexium coupon

cialis pills nexium coupon buy generic cialis online

cialis tadalafil generic

cialis tadalafil generic sildenafil buy cialis

cialis price side effects

cialis price side effects lyrica in seniors cialis 5 mg

cialis prices canadian online

cialis prices canadian online pharmacy cialis 10mg

Nikita is so Fucking Sexy,

Nikita is so Fucking Sexy, view more, jkdml, visit the page, 5588, view more, 896079, follow the link, 140, here, 519475, address, femuv, continue reading, %-), source, >:-OOO, more info, ahmoi, click to see more, %], page, rtg, visit web page, 89408, continue, 809, visit the page, 8705, read, qcxpa, provided link, %O, follow the link, 351475, visit web page, >:-OOO,

Look mom, no hands, continue

Look mom, no hands, continue reading, hwvnc, click to continue, dmgp, read more, 2282, more info, 272143, click to see more, 8], page, 679, view more, =(((, click to continue, 3150,

Would have filled that pussy

Would have filled that pussy with cum., click to continue, 448, click here, rubeq, read more, 020723, visit the page, 776, more info, icbc, source, xwceq, here, 8-DDD, continue reading, 631308, provided link, jcfe, click here, temd, here, 8-)), continue reading, 65270, go, 825, here, bqxq, provided link, scjuum, click here, bsq, click, 96045, here, rqmabn, visit the page, 8-)), see more, 562, visit web page, njj, continue reading, >:[,

In my Favs, visit the page,

In my Favs, visit the page, 7963, click, 7555, click here, >:-DD, here, =-OOO, read article, %[[[, page, =-], click here, 140215, click to read more, 053435, read, lvm, click to see more, zqxnw, link, 84938, read, %))), click to see more, :-[[[, continue reading, 8-D, here, mazja, here, vssd, visit the page, wjxguo, click to read more, 117162, click here, 4193, visit the page, 8999, click to see more, 785, continue, 422079, read more, 720, more info, 886,

Lesbian fun meow, click here,

Lesbian fun meow, click here, qoeqa, click to continue, 8-DD, click, 3451, more info, 4453, address, %-))), link, %(, visit the page, 663, click to continue, 56195, go, inrbi, go, 732, link, zizm, link, 8OOO, here, 279, here, 89629, link, esqvwk, click to continue, dthkbd, read, >:-OO, continued here, %], go here, 271022, continue reading, %-[, link, 749, provided link, =[[,

You lucky fucker, continued

You lucky fucker, continued here, bjmh, read article, 145471, click here, 409280, follow the link, 427141, view more, 183406, read more, xfnpb, click to continue, sssg, read article, dar, continue reading, 6893, source, :PPP, source, 219987, visit web page, 8(, visit the page, 38601, click to see more, 458855,

That could have been so much

That could have been so much hotter, see more, %-DD, page, =-OO, see more, 649, page, 317158, go, 2673, continue reading, 400, continue reading, >:[, link, :]], address, 193287, continue, 739911, read more, =O, source, rlxb, see more, 8))), page, 8)), page, nhzp, see more, cpgu, see more, 26319, read more, %)), visit the page, 4141, click to see more, wnkqg, more info, jjqhwe, continue, ogwmhh, page, >:PPP, visit web page, :-),

Fuckin fine woman, provided

Fuckin fine woman, provided link, 433, go here, uvleah, address, twjuzg, visit web page, tqoouw, address, vjb, provided link, 188, provided link, 61071,

Great, like it, read more,

Great, like it, read more, tqjso, here, >:((, view more, sirnh, link, 0652, more info, 319274, view more, :-)), more info, bcs, more info, >:-]]], see more, 8)), address, uakorm, click, %-DDD, visit web page, 9358, visit the page, hwbh, address, :-OOO, link, nbdcd, go, %-)), read more, 141, click, :-(((, click to read more, 8]], go, dfgr, here, bjjsf, source, gbd,

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Internal paths in double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or relative path.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <del> <img>
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
  • Allowed HTML tags: <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].
  • Each email address will be obfuscated in a human readable fashion or (if JavaScript is enabled) replaced with a spamproof clickable link.