Perlã§ã¢ãã³ãªãããã¯ã¼ã¯ãµã¼ãã¼ãæ¸ãã«ã¯
Comet ã«ã¤ãã¦ã¯ãæ®åãããã©ããã¨ãã以åã«ãã©ã使ãã°ããã®ããæ£ãã使ã£ãå ´åã«ä½ãã©ãã¾ã§ã§ããã®ããã¨ããç解ãå ±æããã¦ããªãããã«æãã¾ãããªã®ã§ã(ããã¾ã§ç§è¦ã§ãã) 使ç¨ããã¹ã©ã¤ãã®ä¸é¨ãå ¬éãããã¨æãã¾ãããããããã°ããããã ããã
ãµã¤ãã¦ãºã©ãã®å¥¥ããã«ãã Comet ã®ãµã¼ãã¼å¨ãã®è³æããã°ããããC10K ã«å¯¾ãã¦ã©ã®ãããªã¢ã¼ããã¯ãã£ãã¨ãã®ãè¯ããã¨ã®èå¯ãç¹ã«åå¼·ã«ãªãã¾ããã
ã¾ããåé¡ãæ¹åãã¹ãç¹ãããã°ãæãã¦ããã ããã°å¹¸ãã§ãã
ã¨ããã®ã§åé¡ãæ¹åãã¹ãã¨ããããã§ã¯ãªãã§ãã Perl å¨ãã®è©±ã§å°ãè£è¶³ãã
è³æä¸ã®ãåå¿è ã¸ã®ãªã¹ã¹ã¡ã PoCo::Server::HTTP ã§ããã©ã¼ãã³ã¹ã欲ãã人ã«ã¯ Sys::Syscall qw/:epoll/ãã®ç¹ããããã Perl ã§ã epoll ã使ãã¾ããã¨ãããã¨ã ã¨æãã¾ããããã㯠Perl ãããè²ã ããæ¹ãããã¾ãã
POE ã¯ããã©ã«ãã§ã¯ãã¡ã¤ã«ãã£ã¹ã¯ãªãã¿ã®ç£è¦ã« select(2) ã使ãã¾ãããPOE::Loop ã®å®è£ ãåãæ¿ãããã¨ã§ãã®ä»ã® API ã使ãããã«æåãã«ã¹ã¿ãã¤ãºã§ãã¾ããPOE::Loop::Epoll ã使ãã°ããä¸æè°ãä¸è¡è¿½å ããã ã㧠POE ãµã¼ãã epoll 対å¿ã«ãªãã¾ãã(poll(2) ã使ãããå ´å㯠use POE ããåã« use IO::Poll ããã° OK)
POE ã¯ã¡ãã£ã¨ãã¬ã¼ã ã¯ã¼ã¯ã¨ãã¦ã§ãããããã¨ããå ´å㯠Sys::Syscall ã使ãã®ãããã§ãããSys::Syscall ã ãã 㨠epoll é¢é£ã® API ãç´ ã§æ¸ããªãããããªãã®ã§ã³ã¼ããã¡ãã£ã¨è¤éã«ãªããã¡ããã㧠POE ãããã©ã¤ããªå®è£ ã§ã¤ãã³ãé§åããããªãã¨ããå ´å㯠Event::Lib ã使ãã¨è¯ãã§ããããEvent::Lib 㯠memcached ãªã©ã§ã使ããã¦ãã libevent ã® Perl ãã¤ã³ãã£ã³ã°ãLinux ã® epoll ã ãã§ãªã BSD ã® kqueue ã Solaris ã® devpoll ãªã©ãæ½è±¡åãã¦åãã¤ã³ã¿ãã§ã¼ã¹ã§æ±ããä¸ãã¤ãã³ãé§åã®ããã°ã©ãã³ã°ã¢ãã«ãæä¾ãã¦ããã¾ãã
ä»ã«ã epoll ããå®è£ ã§ã¤ãã³ãé§åã©ã¤ãã©ãªã¨ããã° Perlbal ã MogileFS ã§ããªãã¿ã® Danga::Socket ãªãã¦ã®ãããã¾ããã¡ãã£ã¨ããã¥ã¡ã³ãä¸è¶³ãªã®ãè¦å´ããããããã¾ããããPerlbal ã MogileFS ã§ãã§ã«ç¨¼åå®ç¸¾ã®ãããµã³ãã«ã½ã¼ã¹ãããã®ã¯å¼·ãå³æ¹ã§ãã
ã¨ããã®è¾ºã®è©±ããUNIX ãããã¯ã¼ã¯ããã°ã©ãã³ã°ã®ä¸æ©ããããã¾ã§è³ãçµç·¯ãå«ã㦠4 æã® YAPC::Asia ã§è©±ãäºå®ã§ããYAPC ã¯ãããã ã¿ã¤ã ãã¼ãã«ãçºè¡¨ã«ãªãã¾ãããã