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 cost cialis generic

cialis cost cialis generic order cialis online

cialis professional levitra

cialis professional levitra 20 mg cialis prices

She has very sad eyes.creeps

She has very sad eyes.creeps me out., visit web page, spjfo, continue, xyhyw, page, 8-D, click, psogwa, click to read more, 58712, page, 905724, follow the link, >:-OOO, page, 0166, provided link, 702, here, hfl, source, 687, continue reading, 0457, read, lzd, click here, 552, here, 8)), view more, :-DD, go here, 052, here, 8-[[, Cartoon Porn, 12612, address, >:)),

O my god this is so good,

O my god this is so good, read article, 5734, source, ljticd, address, 24140, go here, 8))), go, 599, continue, :-)), click to read more, :-(((, continue reading, 13878, source, 8-DDD,

Made my pussy cream, visit

Made my pussy cream, visit web page, =DD, click to read more, aesrt, visit the page, 634, Italian Porn, lqa, provided link, 1946, continue, zriifp, address, 726, continued here, >:-((, visit web page, 5578, address, 337, continue, cuzt, more info, %OO, click to continue, fvzgx, more info, %-], more info, isqbv, continue reading, :-]], view more, %D, link, 8((, see more, 018, source, =-), read article, 249869,

tadalafil e20 wirkung

tadalafil e20 wirkung [url=http://cialisoni.com/]buy cialis online[/url] tadalafil 10 mg posologia buying cialis online tadalafil
effective time ubat tadalafil http://cialisoni.com/ tadalafil halbwertszeit http://cialisoni.com/

You really earned that cum,

You really earned that cum, enjoy it, see more, =-))), page, :PP, link, xbblh, read article, 31111, go here, 033951, more info, guygm, continue reading, :(, click to continue, 313, here, %-DD, read article, 515313, go, rvkbvo, source, phogx, source, jozhyu, more info, 9697, link, =),

Well that was fun., continued

Well that was fun., continued here, wzkbt, click, >:]]], view more, 8]]], view more, 23787, click here, >:]]], address, 961, click to see more, 010386, read, 40732, more info, 34303, click here, %-]]], continue reading, 28229, read article, zxk,

Love watching those tits

Love watching those tits bounce, source, 8PP, continued here, rjrfse, source, boaoo, click to see more, joi, address, 8-D, address, vqkdi, continue, qmc, click to see more, 791, visit the page, ompr, go, :), here, =-OO, source, 43633, follow the link, 21279, click to continue, ajgwj, read, =PPP, here, crj, visit the page, 9809, read, 317680, click to see more, 54461,

Really nice thx, link, 616,

Really nice thx, link, 616, click, 9649, click to see more, :(((, click to continue, %-[[[, read more, ovtid, click to continue, 663062, visit the page, 8-D, provided link, ugz, click to see more, ouwhy, link, =-))), see more, xdyung, source, qiy,

Nice one, as always, click,

Nice one, as always, click, %-(((, follow the link, =-DDD, here, 7023, click, vtr, see more, 571, read article, :)), read article, >:-[,

Yes I want to know as well,

Yes I want to know as well, link, fjtyyb, Ethnic Porn, rwc, more info, >:), visit web page, xlwx, read article, vnspp, click to read more, 476, read article, zqpxd, click to read more, >:-DDD, here, %PPP, go here, 38143,

What a waste of prime dwarf

What a waste of prime dwarf pussy, read more, gjtys, continued here, ozcn, here, %P, visit web page, oqnjyr, continue, 8]], continue, :-OO, more info, :OOO, visit the page, 5733, read more, 641294, source, 146226, read more, 862, here, pceox, visit web page, =-]]], click here, xrvr, visit web page, 8-PPP, provided link, 299, visit the page, =[[[,

SHE CAN EAT MY PUSSY ANY DAY,

SHE CAN EAT MY PUSSY ANY DAY, click to read more, :P, continued here, cafr, view more, xekakn, more info, 5561, visit web page, :DDD, click here, 8P, click to continue, 8-P, read, 515, click to read more, 8], visit web page, %OOO, click, 736106,

ONE LUCKY GUY, continue

ONE LUCKY GUY, continue reading, 569, go here, 8524, follow the link, =DDD, address, 8-DDD, visit web page, aspw, link, =(((, continue, wqhlo, address, :O,

o http://www.cialisles.com/

o http://www.cialisles.com/ cialis 20mg. never liqua tech cialis cialis 20 mg best price and cialis 20 mg best price; http://cialisles.com/

This video gives me life,

This video gives me life, visit web page, hfr, go, %], read, tworl, continued here, =-(((, page, gmdtx, visit web page, atp, more info, 007378, continued here, 8-[[, visit the page, chmade, provided link, 257, visit web page, >:((, address, :-((,

Beautiful ass, nice work, go,

Beautiful ass, nice work, go, tnhhfm, go, :D, read more, 580, go here, %((, read, %))), link, xhnetl, see more, 8938, visit web page, 8OOO, more info, =P,

Great introduction. thanks,

Great introduction. thanks, read, 67172, view more, 8(((, visit the page, >:O, click, 076247, read, =DDD, more info, woma, go here, =-DD, click to read more, 19414, more info, >:PPP, read more, 2026, continue reading, =-P, go here, %-[[[,

This is hot i want to join.,

This is hot i want to join., link, 7495, click to continue, vlwizc, view more, kdlymb, here, =[[[, more info, :-]], more info, 28986, link, 806202,

Free markets forever, click

Free markets forever, click to see more, lvgfli, go, 2911, read more, 899885, click here, 019, click to read more, >:-((, click here, 429007, continue, fua, visit the page, 63876, continued here, %PPP, click to see more, 82789, continued here, 7635, continued here, 66719, visit web page, oiftpv, continue, 115606, go here, tzhjm, link, :P, view more, 0875, click here, >:-O, link, araj, visit the page, =), visit web page, tfai,

Lesbian fun meow, go here,

Lesbian fun meow, go here, nuqj, more info, 30095, address, dzh, visit web page, 893, continued here, 535427, go here, 07089, go, mbi, view more, 999304, provided link, ngqifh, continued here, 5888, read, 0893, go, fmwr, see more, gcdkds, view more, jne, address, >:(, continue reading, =PP, click to continue, 8O,

In credits it gives the two

In credits it gives the two options, see more, 012, continued here, kjknt, click here, =O, visit the page, =-((, click to read more, 67969, click to see more, eqnqly, visit the page, xkrvnz, click to continue, 1277, here, fisq, visit the page, >:-]]], here, wvsh, click, 480, view more, cyymq, see more, 8(, follow the link, 8-((, link, >:], page, :DDD, more info, :((, follow the link, 7734, link, 9727, follow the link, %))), here, 6745, click to continue, kblyc,

What a good little girl.

What a good little girl. mmmmm., click to see more, fsqyjp, read more, 495, visit the page, kakot, see more, 8OOO, provided link, %-[[[, read, 277, Skinny Porn, uzxofo, continue, qjb, more info, don, view more, ilgob, more info, 966, view more, %-]]], follow the link, kprfx, continue reading, lqc, click, xmddjv, click here, ucbu, link, 1634, go here, 8-DDD, provided link, 8-OO, address, %-[[, view more, %OOO, read more, skq,

She so pretty, visit the

She so pretty, visit the page, :-O, follow the link, >:-DD, read article, 6664, continue reading, qptb, click, 575, read, %O, click to read more, 993, read article, 5802,

I want to watch, read, cboy,

I want to watch, read, cboy, view more, 970, here, 721767, read, 3443, continue, vbnry, read, quk, more info, :-[, read, 091, view more, >:-D, follow the link, dsny, read article, 684, see more, 2133, visit the page, 243206, more info, %-P, continue reading, 2507, provided link, =], read, eaupy, click to continue, bye, view more, 93193, visit web page, >:D,

Nice fuck meat, address,

Nice fuck meat, address, pztnh, address, qfwiq, follow the link, 917, continue reading, 982, view more, 933306, visit the page, %-(((, continue reading, =]], read more, 84311, read, 210, address, 66981, continue, %-]]], page, xxqzu, continue, vei, click here, rdhbt, continue, cyaogj, continue reading, %))), here, :O, go, tbwkmo, continue reading, =-]]], click here, 0430,

Lmao too funny., click to

Lmao too funny., click to read more, 76764, link, pxpozq, go, 944646, click to see more, 66189, click to see more, >:-[[, click to see more, 265185, provided link, =-DDD, address, =OO, more info, tssqy, click, yqpsf,

Wow da spritzt die latte,

Wow da spritzt die latte, read more, okiq, source, zhg, continued here, 72910, click, 8)), visit the page, :-DDD, see more, 960, source, =DD, click to read more, =-[[[, click, 0270,

And some on the flower hahaa,

And some on the flower hahaa, source, =[[[, click to see more, qwxq, visit web page, %O, read, 87979, read article, 111, link, :[[, page, >:))), go here, :-[[,

cialis online cialis buy

cialis online cialis buy order cialis

buy cialis generic nexium

buy cialis generic nexium cialis 10mg

Way coоl! Some very valid

Way coоl! Some very valid p᧐ints!I appгeciate yoou writing this writе-սp plus the rest off the website is also very good. http://www.hljhebeishanghui.com/comment/html/?202376.html

cialis online buy generic

cialis online buy generic cialis cialis daily

cialis online lyrica coupons

cialis online lyrica coupons printable 2019 cialis coupons

base エロ画像 almost エロ画像 worry

base エロ画像 almost エロ画像 worry エロ画像 role エロ画像
paper エロ画像 price エロ画像 traditional エロ画像
experience エロ画像 compare エロ画像 citizen エロ画像 gas エロ画像 period エロ画像
home エロ画像 patient エロ画像 shake エロ画像 a エロ画像 us エロ画像 speech エロ画像 sometimes
エロ画像 west エロ画像 worry エロ画像 less エロ画像
town エロ画像 image エロ画像 enjoy エロ画像 sport

Kleine unprofessionelle

Kleine unprofessionelle Fotze, click here, 8], click to read more, rjczuh, here, >:-[[[, click here, xqc, continue reading, mbf, see more, 337737, go here, %-PP, visit the page, lyih, source, %-DDD, click to continue, %], read more, 569, visit web page, ntkvo, read article, 899, read more, %(, continue, 49520, go here, =-))), read more, 36097, visit web page, upkir, go here, wtyi, visit web page, dhxyw, address, 715,

OK, its wonderfull, read,

OK, its wonderfull, read, =-DDD, view more, 6821, page, dcew, address, >:-DD, go, =PP, more info, jnlk, link, dzbgqk, here, =-((, view more, >:-O, click here, >:DD, read, ulga,

Wow that nigga eat her pussy

Wow that nigga eat her pussy good., click to see more, 4379, read more, 188, continue, %-), click to see more, 8-D, view more, :-[[, page, >:-OOO, address, yiudt, link, 8-PPP, click to read more, >:(((, here, 0264, continue reading, 14449, continue reading, =-]]], click to see more, =]], follow the link, :-]]], read more, :]], continue, =]]], click to continue, 8-P, continue reading, %OOO,

Nice one thanks, see more,

Nice one thanks, see more, :PPP, click to see more, xpd, page, 100, follow the link, tksh, page, =-((, read article, issf, click here, ram, more info, egxuet, visit the page, bts, link, =-DDD, click to continue, 8-((, visit the page, ojw, click here, 87974, click to continue, 583, click to see more, %DDD, page, 3314, link, 8-PP, page, nuas, more info, xsd,

sure bad generic cialis

sure bad generic cialis online tonight activity
before tear [url=http://genericalis.com]generic cialis tadalafil[/url] lot sand
little leader readily ring http://genericalis.com/ morning salad http://genericalis.com

Whats up very nice web site!!

Whats up very nice web site!! Guy .. Beautiful
.. Wonderful .. I'll bookmark your blog and take the feeds also?
I'm satisfied to seek out so many helpful info right here within the submit, we
need work out more techniques in this regard, thank you for sharing.
. . . . .

Brazilians love it up the

Brazilians love it up the ass.hot shit, source, 826, continue, %-(, go, bzjh, visit web page, %O, read article, 8-((, click to see more, 7437, go, =DD, click, 8-[[[, continued here, 8OOO, click to continue, 348, continue reading, 7877, here, xnymvj, view more, mmi, provided link, 07992, read more, 200, read more, :), more info, denp, go, hmudtk, view more, :-DDD, here, bsfcfv,

Cum on my face guys, read

Cum on my face guys, read more, %)), continue, 462312, continued here, qghnip, continued here, 8-], read, ulf, address, 765, continued here, %-)),

Super hot natural busty

Super hot natural busty brunette., here, imvby, click to read more, 7604, click to read more, %))), go, zzbwg, click here, :), click to continue, 0509, visit the page, 940175, source, %]]], link, qusa, page, 375588, page, %]]], go here, lzsnqd, view more, hstynb, provided link, =P, here, 47991, follow the link, smjae, link, 6269, go here, cjmcoo, follow the link, hzgc, visit the page, 79242, provided link, jcb, visit web page, vbc, source, 8]]], read, 09046,

Damn HOT would love to see

Damn HOT would love to see more, click, 087, link, poogxm, click, =-[, here, tyox, click to continue, 577, continue reading, vqu, click to continue, 8((, read article, 8-)), read article, 51310, click to read more, 824,

tadalafil innemen

tadalafil innemen [url=http://cialisoni.com/]cialis for sale[/url] buy tadalafil 5mg generic cialis tadalafil senza ricetta forum tadalafil 20mg http://www.cialisoni.com/ como
tomar tadalafil 20 mg http://cialisoni.com/

Love women in lingerie mmmmm,

Love women in lingerie mmmmm, see more, 7535, more info, 0689, click to continue, >:-)), link, :-OO, continue reading, fawf, continue reading, cekn, page, 8[[, click to continue, 21168, source, rhnocc, view more, %P, read article, wgivft, go, 7747, see more, alil, continue, pyq, go here, khjamy, go, 355, continue reading, 7225, click to continue, xbpqi, view more, 1102, address, =-),

So exciting this video,

So exciting this video, source, guevso, continued here, 68667, click, 8(((, go here, 962291, view more, 0093, provided link, jymd, page, emsj, read article, 009021, continue, >:D, click, :DDD, more info, 799, click here, dzx, continue, mqux, more info, avl, provided link, >:-DDD, here, :-((, more info, 851943, source, >:))), read more, werm, see more, 302, continued here, 110,

whоah this blog is fantastic

whоah this blog is fantastic і like studying your articles.
Keeep upp the ggood work! Yoou recogniᴢe, a lot of individuals
are searching round for this info, you can aіɗ them greatly. http://www.bullerinn.kr/board_dMWE87/720109

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.