DBI (DBD::Oracle) a udalostni smycka

Jan Kasprzak kas na fi.muni.cz
Pondělí Únor 4 11:16:13 CET 2008


	Zdravim,

potreboval bych v programu komunikovat s vice sitovymi sluzbami
(cili udalostne rizena smycka). Prijde mi pouzitelne EV, resp. EV::Bind:

http://search.cpan.org/search?query=EV&mode=all
http://search.cpan.org/~dmaki/EV-Watcher-Bind-0.00001/lib/EV/Watcher/Bind.pm

uz proto, ze to umi i nejake pokrocilejsi vnitrnosti nez select() nebo poll()
- napriklad epoll nebo eventfd. Problem je, ze bych potreboval, aby jednou
z tech sitovych sluzeb se kterymi budu komunikovat byl Oracle (cili
DBD::Oracle).

	Umim ja nejak z DBI vytahnout ten filedeskriptor ktery me spojuje
s databazi, a navesit ho nejak na tu udalostni smycku? Neco jako

- az bude socket do DB pripraveny, udelej prepare.
- pak obsluhuj ostatni deskriptory
- az bude socket do DB pripraveny ke cteni, precti si vysledek prepare
- az bude socket do DB pripraveny pro zapis, zavolej execute.
- obsluhuj deskriptory ktere jsou prubezne pripravene.
- az bude odpoved od execute, precti si ji.
- kdyz bude socket do DB zrovna pripraveny ke cteni, volej fetch, jinak
	obsluhuj prubezne i ostatni deskriptory.

	Toto je idealni pripad, ve skutecnosti bych pripustil
i ze v dobe connect, prepare a execute bude proces zablokovany,
ale na fetch uz bych cekat nechtel a chtel bych stihat obsluhovat
i ostatni spojeni.

	Muzu samozrejme databazoveho klienta dat do samostatneho procesu,
ale to neni prilis rozumne (delal bych vlastne jen proxy tomu DBI).

	Jak byste tohle v perlu delali?

-Y.

-- 
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/    Journal: http://www.fi.muni.cz/~kas/blog/ |
>>  If you find yourself arguing with Alan Cox, you’re _probably_ wrong.  <<
>>     --James Morris in "How and Why You Should Become a Kernel Hacker"  <<


Další informace o konferenci Perl