[Perl Other] POE 中的 Kernel Session 之类理解和使用
转载本站文章请注明,转载自:扶凯[http://www.php-oa.com]
本文链接: http://www.php-oa.com/2009/12/30/poe-kernel-session.html
POE::Kernel中的 session 管理
当一个poe的session建立时它会成为当前session的子session.那个当前的session就成了父,这就和UNIX的进程一样.
每一个session都是有一个父的就算第一个session也是一样他的父是指的poe内核实例
在poe中有很多信号可以对子session进行控制.
poe内核提供了4种默认的session的管理方法._start, _stop, _parent and _child.
下面来拿_child来讲.
- _child 包含一些信息从@_,典型地如ARG0, ARG1 and ARG2,但在不同的poe::Session类中不一定总是这样.
- ARG0包含一个字符描述对child的session所发生的改变.’create’ 指子session已经创建, ‘gain’ 指子session得到一个另外的session, or ‘lose’指子session退出.
- ARG1是对child的session的引用
- ARG2 在 ‘create’时, ARG2保存着 child session调用的 _start 处理的值. 同样,在lose(子session退出.)时, ARG2 保存着_stop 的值
POE Session
事情处理
– $kernel->yield(‘eventname’, @args); #只能操作当前的 session
– $kernel->post($session, ‘eventname’, @args);
– $kernel->call($session, ‘eventname’, @args);
其它的事件处理
Immediate, not via scheduler
– $kernel->delay_set(‘event’, $seconds, @args)
– $kernel->alarm_set(‘event’, $epochtime,
@args);
POE Session 的公共方法
postback EVENT_NAME, EVENT_PARAMETERS
它会返回一个 pose 事件到目标 Session 匿名的引用.
在use POE::Kernel; 时,默认会导出$poe_kernel的全局变量,我们可以来使用 get_heap 取得session中的heap的引用,它就是对象session的$_[HEAP].
调用方法:
$session->get_heap();
get_active_session取得kernel中所有的活的session出来
调用方法:
$kernel->get_active_session();
POE Kernel 的状态访问
取得当前运行中的 Session 的引用,相当于$_[SESSION]
$poe_kernel->get_active_session;
取得当前运行中的事件名,如果事件当前没有就还回空,相当于$_[STATE].
$poe_kernel->get_active_event;
取得 POE 事件队列中还有多少事件需要调用
$poe_kernel->get_event_count
取得 POE 事件中下次事件调用的时间
$poe_kernel->get_next_event_time
取得 POE 事件中下次来调用事件的 POE::Loop 类名
$poe_kernel->poe_kernel_loop


















