Book-Chinese-MasterPerlToday
view release on metacpan or search on metacpan
lib/Book/Chinese/MasterPerlToday/Catalyst.pod view on Meta::CPAN
=head3 Session
æä»¬æè¯´ç Session æçæ¯ L<Catalyst::Plugin::Session>
Session å为两个é¨å
=over 4
=item * State
State ä¸è¬æ¨èåªæ L<Catalyst::Plugin::Session::State::Cookie>, URI State ä¸å¤ªå®å
¨
=item * Store
Store æå¾å¤ç§ï¼ä½ å¯ä»¥åå° DBI (DBIC) éä¹å¯ä»¥åå° Memcached æ FastMmap
=back
æ°¸ä¹
ç»å½å¯ä»¥åé
L<Catalyst::Plugin::Session::DynamicExpiry>, 该模åéè¿æ¯æ¬¡é½æ´æ¹ cookie ç Expire æ¥ææ¥è·å¾é¿æ¶é´çå¨åã
å¦ç½è¯´ï¼è¯¥ Session 模å并䏿¯å¾å¥½ãå 为ç»ä¸ç API æ¥å£ç¼ºé·ï¼ä½ ä¸è½éè¿ä¸ä¸ª user_id æ¥å é¤è¯¥ç¨æ·ç session æ°æ®ãSession 模åçè¿ææ°æ®æ¸
çä¹éè¦èªå·±åã
使¯æ´ä½æ¥è¯´ï¼è¿æ¯åå°äºåºè¯¥éè¦åå°çã
æåï¼æä»¬ä»¥ L<Catalyst::Plugin::Session::State::Cookie> + L<Catalyst::Plugin::Session::Store::DBIC> 为ä¾ï¼è®²è¿°ä¸ç¹å
é¨ç¥è¯ã
=over 4
=item * sessionid
ç¬¬ä¸æ¥ï¼æä»¬å°å¨ç¨æ·è°ç¨ $c->session æ $c->sessionid æå
¶ä»çæ¶åï¼éè¿ C<get_session_id> æ¥è·å¾ sessionid
å¨ State::Cookie éï¼get_session_id ä»
ä»
æ¯æ¥è¯¢ $c->request->cookies->{$cookie_name};
=item * session
å¨å¾å° sessionid ä¹åï¼æä»¬å°å¨ç¨æ·è°ç¨ $c->session æ ->flash çæ¶åï¼éè¿ C<get_session_data> æ¥è·å¾ session çæ°æ®ãåæ¶ï¼æä»¬éè¿ L<Object::Signature> æ¥å¾å° session æ°æ®çä¸ä¸ªå½å signature
get_session_data 彿°å¨ L<Catalyst::Plugin::Session::Store::Delegate>, å®å°éè¿ C<session_store_delegate_key_to_accessor> æ¥è°ç¨å¾å° session("session:$sid"), expires("expires:$sid")
=item * request
ä¸è¿°æµç¨å½å¨è°ç¨ $c->session æ¶åçï¼å¦æä¸è°ç¨å°±ä¸ä¼éè¿ Store å¾å° session æ°æ®ã
lib/Book/Chinese/MasterPerlToday/DBIx-Class.pod view on Meta::CPAN
=back
å¦ä¸ç§è·åæ¹å¼æ¯ä½¿ç¨
resultset('Errors')->search( { cond => 'bla' } )->slice(0);
å®å°ä½¿ç¨ LIMIT/OFFSET ç´æ¥å¾å°ä¸æ¡æ°æ®ã
=item * 夿ç search
建议é
读 L<DBIx::Class::Manual::Cookbook> å L<SQL::Abstract>
resultset('XXX')->search( {
requestor => 'inna',
worker => ['nwiger', 'rcwe', 'sfz'],
status => { '!=', 'completed' }
} );
# SQL:
# FROM xxx WHERE
# ( requestor = ? ) AND ( status != ? )
# AND ( worker = ? OR worker = ? OR worker = ? )
( run in 0.448 second using v1.01-cache-2.11-cpan-e9199f4ba4c )