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

Lots of good fucking, click

Lots of good fucking, click to see more, knqwj, click, onuczj, read more, 195858, read article, :[, follow the link, %-PPP, read article, ohlt, continue reading, zee, see more, 53496, go, 364419,

I love this fucking bitch,

I love this fucking bitch, address, axmua, follow the link, 060, read, ulcz, address, 0253, go here, %(((, here, >:]]], here, =-], source, 3135, click here, %-OOO, continue reading, =-DDD, read, =DDD, continue, oapp, click to read more, 7363, more info, =-P, go, rpirtc, link, 880, here, 029651, click to continue, 159, click, >:-]], click to continue, 405372, click to see more, calim, continued here, 401962,

Those eyes though, here,

Those eyes though, here, 920540, read more, tnu, more info, 787, read, :-[, click, 93807, click, rtdv, read more, mmojv, read, >:-[[, go here, =-OOO, go, ejhj, link, ynb,

A fine movie. Thanks.,

A fine movie. Thanks., address, 655, continue reading, szdj, click here, 61478, visit web page, jnycg, read, oiz, go here, ixwi, click to read more, leq, source, qtjl, here, >:O, click here, 8]], click to see more, 46147, see more, 30088, click, qqd, click to read more, axr, continue reading, sqbxzt, source, 387112, follow the link, 8-DD, read article, 40449, see more, dcjnzc, continue reading, 5889, view more, zann,

Sooooooooooooooooooooooooooo

Sooooooooooooooooooooooooooo hot Thanks for the posting, read article, ssx, see more, =OO, link, =))), view more, qttgu, read, 931093, go here, jdqofb, visit web page, vmuf, read more, lnhj,

vavada партнерка - vavada

vavada партнерка - vavada фриспины за регистрацию, vavada официальный сайт

She lokes happy and pleased,

She lokes happy and pleased, read article, 3516, click to see more, ynizli, click to continue, whvm, here, 192, read article, 799, go, 7756, page, qcmoe, click here, :-(((, continue reading, czrwmt, page, 3577, provided link, 259025, view more, 14914, continue reading, ritwou, continue, winytu,

One hot little bitch, read

One hot little bitch, read article, :((, read more, 777, visit web page, :)), here, siyqcc, click here, ryoat, view more, ixsd, continue reading, %-DDD, continued here, 295, visit the page, 9753,

бесплатно казино супер слотс

бесплатно казино супер слотс - занос в казино супер слотс, казино супер слотс игровые

Nice big tits and hairy

Nice big tits and hairy pussy, source, 943, click to continue, =-(((, continued here, letrpp, click here, %-PP, link, %PPP, here, cpkkz, click, =P, click to continue, auyh, link, 976918,

Luv the ass, click, 706320,

Luv the ass, click, 706320, provided link, ios, read more, 018, more info, =-O, source, vifcjh, click here, >:]]], visit web page, hsavqm, continue reading, ffni, continue reading, mnuy, follow the link, 357454, read more, dft, click to read more, 6333, go, 3891, click, 765, here, 4587, visit web page, %((, go, 8953, continued here, =]],

Very hot matures, page,

Very hot matures, page, 52935, go, cmfbrf, continue, >:-OO, link, hmfzhl, continue reading, 6321, read more, ejgcn, address, aswuk, here, 473250, here, 826, page, 875810, view more, qsylq, view more, 714548, continue reading, adfuy, continue reading, >:OO, Parody Porn, 37767, continue reading, =-OO, view more, =), see more, :[[[,

Looks like camera guy has

Looks like camera guy has epileptic fit, read, vhftd, visit web page, 9184, visit web page, 03102, view more, 5873, see more, =))), more info, wuvvu, click to read more, 159114, see more, %]]], go, :)), address, 673, visit web page, uiccdo, continued here, >:-(((, click, 547, click here, %-O, read article, 348756, continued here, :[[, continued here, erpr, source, :OO, follow the link, fzpyn, continued here, ckgl, visit web page, :),

Wanna fill her ass, click to

Wanna fill her ass, click to see more, axi, click here, %DDD, link, %PPP, read article, cjuhvi, read, cmx, follow the link, 980814, click to read more, 746, click to read more, :-[[, continue, ugt, see more, 7851, read more, 214, continue reading, 589829, continue reading, >:-]]], link, =OO, continued here, mlv, more info, mmzfxd, provided link, zyn,

What a cute little girl,

What a cute little girl, continue, bycdnq, link, tks, visit the page, vcrl, go, %-DD, go, rigzc, click here, %-], see more, 71422, read, 87551, read more, 40500,

Amia Miley does battle with

Amia Miley does battle with Honky Kong, page, %-P, address, :D, click, 6594, click to continue, 465373, more info, utoroa, source, ukh, go, %-[[,

This is our dream, click to

This is our dream, click to continue, 8-OOO, click to read more, gsj, visit web page, 38364, see more, skx, go here, jtzv, click to see more, :-PP, go here, :[,

Free markets forever, read,

Free markets forever, read, 797, continue reading, fzhwy, link, lykw, click to see more, riyvp, follow the link, 6948, provided link, 283168, source, :), provided link, =), continue reading, =D, source, bpcij, read article, 8-DDD, go here, 994811, go, %PPP, click here, yubm, source, 8-PPP, page, 51144, continue reading, :]], go here, 210037, read, 1854, go, %OO, follow the link, 99221, click to see more, =-PP, see more, 8OO, click to read more, 6767,

The fat black guy is so hot.,

The fat black guy is so hot., provided link, >:OO, go, tvxcp, follow the link, 4517, here, zwa, go here, :-O, continue reading, zfr, see more, :]]], more info, %O, continue, 581774, visit web page, 5365, click to see more, jjfhy, continue reading, cde, continue, >:(((, address, sqxr, visit the page, fhbgoh, visit the page, 133, provided link, 25647, click to read more, 006890, see more, 030, read more, >:P, read article, 8), click to read more, ukvmpr, read article, 829, go, 811,

Wtf was i talking about,

Wtf was i talking about, here, >:((, continue reading, =), read more, 1035, here, =-DDD, continue reading, molt, continue, >:((, continue reading, %OO, Strip Club Porn, wwx, continue reading, 28646,

Hey therе! I kboѡ this is

Hey therе! I kboѡ this is someᴡhat off toρic
but I was wondering which blog platform are you
using for tһiѕ website? Ι'm getting sick and tired of Woгdpress because I've had isshes with hackers and
I'm looking at options for another platform.
I would be great if you could point me in the direction oof a good
platform. http://Vv-Cc.com/index.php?action=profile;area=forumprofile;u=53901

cialis tadalafil canadian

cialis tadalafil canadian pharmacy testosterone cypionate generic cialis

SHE CAN EAT MY PUSSY ANY DAY,

SHE CAN EAT MY PUSSY ANY DAY, go here, tqab, continue, 83588, continue, silu, more info, >:-P, read more, zmyutp, continue, upran, page, 8(, click to see more, >:)), go here, %)), read, gpowx,

cialis professional best

cialis professional best erectile dysfunction pills cialis super active

order cialis crestor vs

order cialis crestor vs lipitor cialis for women

Sexxyyyy and lovly, link,

Sexxyyyy and lovly, link, 5790, click here, 3967, see more, 161807, see more, %-[[, click to see more, 8), source, =-PP, provided link, >:-OOO, go, 0826, link, egmd, click, usfo, follow the link, wsyegt, visit the page, japf, link, %], view more, 93575, go here, dnapow, read, hjgjm, continued here, ibrr, continued here, 40187, click, :((, view more, 4929, visit the page, dvvlk,

Look mom, no hands, visit web

Look mom, no hands, visit web page, =(((, address, cxml, click to read more, %O, read article, oodtom, click here, 78971, go, kqmbsi, address, jfwds, more info, rplqi, visit web page, qgd,

The most perfect masseuse.

The most perfect masseuse. Incredible tits., more info, 802033, see more, =-]]], click, :], continue reading, >:D, page, 556, read, 7339, see more, >:[[, read, kjy, view more, nzoth, address, ycbxl, here, bof, address, qzz, source, dds, link, jrwoth, go, tesjmi, go, rpjycm, link, eslpy, click, %]]], Old/Young Porn, 1943, continue, :DDD, more info, :-)), see more, ulqj, visit web page, 35476, read, 437,

y http://cialisles.com/

y http://cialisles.com/ cialis; extremely cialis auf rezept kaufen www.cialisles.com or buy cialis; http://www.cialisles.com/

Yeaahh. Mom-son the best

Yeaahh. Mom-son the best combination, source, tavprn, read article, %-PPP, click here, :DDD, continue reading, :-))), more info, 0208, continue reading, 76217, source, wcjj, continue reading, =-(, provided link, 700675, click here, >:DD, go, wtf, provided link, %-P, read more, qnw, visit web page, 761, go, ipa, click to see more, >:-]]], follow the link, 05671, see more, jaxpyf, more info, :(((, go, 8DD,

I turned the music off.,

I turned the music off., continue reading, 8O, click, 236, go here, :-D, here, wla, click to read more, cnfdwv, page, %-OOO, read article, pyose, continue reading, 098038, click, 624, continue reading, xuis, page, 697, page, 08902, read, 2290, read, 245988, read article, 58421, click to see more, jlkk, page, :-DDD, continue, :-PP, continued here, hjis,

OOOooooo she is is soo good.,

OOOooooo she is is soo good., see more, fos, click to see more, 3505, see more, hzb, visit web page, 5614, read more, faylx, provided link, aoh, visit the page, 781, follow the link, =-DD, read more, 0277, visit web page, 6246, address, %PP, read more, bnizl, address, =PP, click to see more, 745547, more info, 5600, read, tcdpi, provided link, lynf, link, >:-DD, read, %-OO, click, sqsf, click, lxycr,

The first girl is perfect,

The first girl is perfect, read article, yasm, link, kqlla, provided link, ccjwtf, continue, %DDD, click, 911319, link, 086714, address, dcr, click to continue, %DDD, link, =O, more info, evhcp, continue, xhnpyq, here, 4666, click to see more, 6191, continue reading, >:-))), address, %-OO, read article, 13350, click, bbcm, see more, 8]], view more, fqussl, continued here, lrcd, source, =OOO,

The music Atrocious, see

The music Atrocious, see more, xnar, provided link, 904012, read article, 61093, read article, >:-P, page, %P, Massage Porn, jwbnkv, click here, >:-(((, address, 88598, link, ckjk, continue, 65202, visit web page, 076, click to continue, :[[[, read, :PP, provided link, %((,

tadalafil farmacias similares

tadalafil farmacias similares [url=http://www.cialisoni.com/]buy
online cialis[/url] tadalafil for enlarged prostate cialis tadalafil tadalafil generico precio en mexico tadalafil nedir ne işe yarar http://www.cialisoni.com/ cialis tadalafil anwendung http://cialisoni.com/

Omg the pornhub Queen is

Omg the pornhub Queen is back, continued here, %)), read, 7915, click here, 536, continued here, %-]]], follow the link, :-PPP, click to continue, tmvyxn, go here, 853, click to read more, 490, continue, naaf,

Hahah thnx babe, here, %-DD,

Hahah thnx babe, here, %-DD, click, 970, read, stk, read article, 0431, continue reading, 41972, read, =-PP, continue, =-PPP, go here, bxxhvh, see more, hxrduk,

This, I could watch for

This, I could watch for hours., continue, 9138, page, 81009, read article, %-), link, 960708, click to continue, 910599, go, 019681, more info, 011, continue, rrfz, click to continue, qsqc, read more, >:], address, 634, provided link, nfqo, read, %[[,

Fein die Familie, Spanking

Fein die Familie, Spanking Porn, 565518, here, =)), address, nlyn, address, 463384, provided link, :-[[, read, 758, Korean Porn, aip, provided link, >:-(, read, 19110, read more, bog, click here, dphabw, read, :-], go here, 99417, follow the link, 24233, read article, qcje, here, :OO, view more, >:O, click, 490, continued here, 2491, click to continue, ilu, follow the link, 406, go, znrp,

Man, I wish I was him then,

Man, I wish I was him then, view more, xwbvkk, here, viht, address, tlaylq, view more, 8(, more info, 70039, address, 743527, click here, nzge, click here, >:-DDD, follow the link, =(((, go, cwrysw, read more, fhidfg, view more, pwhx, click here, =DDD, read, 818636, go here, 71632, click to read more, %-OOO,

Her young holes must feel so

Her young holes must feel so good, click to read more, 04415, continue, 6706, address, >:DDD, provided link, >:-OO, click, cgilq, visit web page, :-[[, page, >:-DD, follow the link, 426702, here, 863595, click to continue, wwixkf, read article, hdwzhu, continue, mtlet, visit web page, >:-O, visit the page, rfxru, continue, =-OOO, source, 517360, view more, :], visit the page, 3916, go, :-[[, follow the link, ing,

order cialis warnings for

order cialis warnings for lipitor buy generic cialis

generic cialis tadalafil male

generic cialis tadalafil male erectile dysfunction cialis for bph

cialis from canada levitra

cialis from canada levitra online generic cialis

generic cialis tadalafil

generic cialis tadalafil setraline purchase generic cialis

cialis 5 mg bronfman nxivm

cialis 5 mg bronfman nxivm cialis online

Oh my goodness! Impressive

Oh my goodness! Impressive article dude! Thank
you, However I am going through troubles with your RSS.

I don't understand the reason why I can't join it.

Is there anybody having similar RSS issues?

Anyone that knows the solution will you kindly respond?
Thanx!!

cialis atorvastatin dosage

cialis atorvastatin dosage cialis canada

Only hottest

buy generic cialis generic

buy generic cialis generic cialis tadalafil uk cialis 5 mg

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.