SwooleʵÏÖ¸ßÐÔÄÜÒì²½ÍøÂç±à³ÌµÄÔÀíÓëʵ¼ù
Ëæ×Å»¥ÁªÍøÊÖÒÕµÄÒ»Ö±Éú³¤£¬¹ØÓÚÍøÂç±à³ÌµÄÐèÇóÒ²±äµÃÔ½À´Ô½¸ßЧ¡¢¸ßËÙ¡¢¸ß²¢·¢¡£ÎªÁËÖª×ãÕâЩÐèÇó£¬ÖÖÖÖÍøÂç±à³Ì¿ò¼ÜºÍÊÖÒÕÒ»Ö±Ó¿ÏÖ¡£ÆäÖУ¬swooleÊÇÒ»¿î»ùÓÚphpÓïÑԵĸßÐÔÄÜÒì²½ÍøÂçͨѶÒýÇæ¡£swooleͨ¹ýµ×²ãʵÏÖ¹ØÓÚ¿Í»§¶ËºÍЧÀͶ˵ÄÒ첽ͨѶ£¬¿ÉÒÔʵÏÖºÜÊǸßЧµÄÍøÂç±à³Ì¡£±¾ÎĽ«´ÓswooleʵÏÖÒì²½ÍøÂç±à³ÌµÄÔÀíºÍʵ¼ùÁ½·½ÃæÀ´¾ÙÐÐÏÈÈÝ¡£
Ò»¡¢SwooleʵÏÖÒì²½ÍøÂç±à³ÌµÄÔÀí
ÔڹŰåµÄÛÕ±ÕʽÍøÂç±à³ÌÖУ¬µ±¿Í»§¶ËÓëЧÀÍÆ÷½¨ÉèÅþÁ¬ºó£¬¿Í»§¶ËÏòЧÀÍÆ÷·¢ËÍÇëÇó£¬È»ºóÔÚЧÀÍÆ÷ÏìӦ֮ǰ£¬¿Í»§¶Ë»áÒ»Ö±ÛÕ±ÕÔÚ·¢ËÍÇëÇóµÄ״̬¡£Õâ¸ö״̬Ï£¬ÎÞ·¨×öÆäËûµÄÊÂÇ飬Òò´Ë²¢·¢ÐԺͿÉÀ©Õ¹ÐÔÊǺÜÊÇÈõµÄ¡£
Ïà¹ØÓÚÛÕ±ÕʽÍøÂç±à³Ì£¬Òì²½ÍøÂç±à³ÌÊÖÒÕʵÏÖ¸üΪ¸ßЧµØÖª×ã³ÌÐòÔ±¹ØÓÚ¸ßЧ¡¢¸ßËÙ¡¢¸ß²¢·¢µÄÐèÇó¡£SwooleÕýÊÇÒ»¸öÓÅÒìµÄÒì²½ÍøÂç±à³Ì¿ò¼Ü£¬ËüµÄʵÏÖÔÀíÖ÷Òª°üÀ¨ÒÔϼ¸¸ö²¿·Ö£ºÊÂÎñÑ»·¡¢Ð³Ì¡¢·ÇÛÕ±ÕʽI/OºÍÐźŻúÖÆ¡£
ÊÂÎñÑ»·£º
Swoole»á½¨ÉèÒ»¸öÊÂÎñÑ»·¹¤¾ß£¬È»ºóͨ¹ý¼àÌý²î±ðµÄÊÂÎñÀ´¾ÙÐд¦Àí¡£ÕâЩÊÂÎñ¿ÉÄÜ°üÀ¨¿Í»§¶ËµÄÇëÇó¡¢Ð§ÀͶ˵ÄÏìÓ¦¡¢I/OµÄ¶ÁдµÈ¡£
г̣º
Swooleͨ¹ýг̻úÖÆ£¬½ÓÄÉÀàËÆÓÚÇáÁ¿¼¶Ï̵߳ķ½·¨À´ÊµÏÖÒì²½·ÇÛÕ±ÕʽI/O¡£Ð³Ì¿ÉÒÔ¿´×÷ÊÇÒ»ÖÖÇáÁ¿¼¶µÄỊ̈߳¬ÊÇÔÚµ¥¸öÏß³ÌÖÐÔËÐв¢¾ÙÐÐÇл»µÄ¡£Í¨¹ýг̣¬¿ÉÒÔʹµÃI/O²Ù×÷Äð³É·ÇÛձյģ¬´Ó¶øïÔÌÆÚ´ýµÄʱ¼äºÍÌá¸ß³ÌÐòµÄÖ´ÐÐЧÂÊ¡£
·ÇÛÕ±ÕʽI/O£º
Swooleͨ¹ý·ÇÛÕ±ÕʽI/OÊÖÒÕʵÏÖÁËÒì²½¡¢ÊÂÎñÇý¶¯µÄÍøÂçͨѶ¡£ÔÚ·ÇÛÕ±ÕʽI/OÖУ¬²Ù×÷ϵͳÄں˲¢²»»áÆÚ´ýI/O²Ù×÷Íê³É£¬¶øÊÇÔÚI/O²Ù×÷»¹Ã»ÓÐÍê³Éʱֱ½Ó·µ»Ø£¬ÓɳÌÐò×ÔÐд¦Àí·µ»ØµÄЧ¹û¡£ÕâÖÖ·½·¨¿ÉÒÔ×èÖ¹ÔÚÆÚ´ýI/O²Ù×÷ʱÔì³ÉµÄ×ÊÔ´ÆÌÕÅ£¬ÒÔ¼°ÆÚ´ý²Ù×÷Íê³ÉËùÐèµÄʱ¼ä¡£
ÐźŻúÖÆ£º
Swooleͨ¹ýÐźŻúÖÆÀ´´¦Àí²Ù×÷ϵͳµÄÐźţ¬ÀýÈç׼ʱÆ÷ºÍÖÐÖ¹¡£ËüʹÓÃÁËLinuxϵͳµÄsignalfdÀ´¶ÁÈ¡ÎļþÐÎò·û£¬²¢ÔÚÊÂÎñÑ»·ÖмàÌýÎļþÐÎò·ûÉϵÄÊÂÎñ¡£
ͨ¹ýÕâЩÊÖÒÕ£¬SwooleʵÏÖÁ˹ØÓÚ¿Í»§¶ËºÍЧÀͶ˵ÄÒ첽ͨѶ£¬´Ó¶ø¿ÉÒÔÓÐÓõØÌá¸ß³ÌÐòµÄЧÂʺͲ¢·¢ÐÔ¡£
¶þ¡¢SwooleʵÏÖÒì²½ÍøÂç±à³ÌµÄʵ¼ù
ÏàʶÁËSwooleʵÏÖÒì²½ÍøÂç±à³ÌµÄÔÀíÖ®ºó£¬ÎÒÃÇÀ´¿´¿´Êµ¼ùÖÐÔõÑùʹÓÃSwooleÕâ¸öÇ¿Ê¢µÄÒì²½ÍøÂçͨѶÒýÇæ¡£ÏÂÃæÎÒÃǽ«Í¨¹ýÒ»¸ö¼òÆÓµÄÀý×ÓÀ´¾ÙÐÐÑÝʾ¡£
ÔÚÕâ¸öÀý×ÓÖУ¬ÎÒÃǽ«½¨ÉèÒ»¸ö¼òÆÓµÄWebЧÀÍÆ÷£¬È»ºóʹÓÃSwooleÀ´¾ÙÐÐÒì²½´¦Àí¡£Ê×ÏÈ£¬ÎÒÃÇÐèÒª½¨ÉèÒ»¸öserver.phpÎļþ£¬ÓÃÀ´Æô¶¯Ð§ÀÍÆ÷£º
<?php $server = new SwooleHttpServer("0.0.0.0", 9501); $server->set([ 'worker_num' => 2, 'dispatch_mode' => 1, ]); $server->on('request', function ($request, $response) { $response->header('Content-Type', 'text/plain'); $response->end("Hello World "); }); $server->start();
µÇ¼ºó¸´ÖÆ
ÔÚÕâ¸öÎļþÖУ¬ÎÒÃÇÊ×ÏȽ¨ÉèÁËÒ»¸öSwooleµÄHTTPЧÀÍÆ÷¡£È»ºó£¬Í¨¹ýŲÓÃsetÒªÁìÀ´ÉèÖÃЧÀÍÆ÷µÄһЩÉèÖòÎÊý£¬ÀýÈçÊÂÇéÀú³ÌÊýÄ¿ºÍµ÷Àíģʽ¡£½Ó×Å£¬ÎÒÃÇÉèÖÃÁËÒ»¸ö»Øµ÷º¯Êý£¬Õâ¸öº¯Êý»áÔÚÎüÊÕµ½¿Í»§¶ËÇëÇóʱ±»Å²Óá£ÔÚÕâ¸öÀý×ÓÖУ¬ÎÒÃÇÖ»ÊǼòÆӵطµ»ØÁËÒ»¸ö×Ö·û´®¡°Hello World¡±¡£×îºó£¬ÎÒÃÇͨ¹ýŲÓÃstartÒªÁìÀ´Æô¶¯Ð§ÀÍÆ÷¡£
½ÓÏÂÀ´£¬ÎÒÃÇÐèÒªÔÚÏÂÁîÐÐÖÐÀ´Æô¶¯Õâ¸öЧÀÍÆ÷£º
php server.php
µÇ¼ºó¸´ÖÆ
ÔÚЧÀÍÆ÷Æô¶¯Ö®ºó£¬ÎÒÃÇ¿ÉÒÔʹÓÃcurlÏÂÁîÀ´¾ÙÐлá¼û£º
curl http://localhost:9501
µÇ¼ºó¸´ÖÆ
Äã»á·¢Ã÷£¬Õû¸öÇëÇóºÍÏìÓ¦µÄÀú³ÌÊǷdz£¿ìËٵģ¬ÓÉÓÚSwooleʵÏÖÁËÒ첽ͨѶ£¬´Ó¶ø×èÖ¹ÁËÛÕ±ÕʽÍøÂç±à³ÌÖпÉÄÜ·ºÆðµÄÍøÂçÑÓ³Ù¡£
³ýÁËÉÏÊöµÄ¼òÆÓÀý×ÓÖ®Í⣬Swoole»¹¿ÉÒÔÓÃÀ´ÊµÏÖÖÖÖÖÖØ´óµÄÍøÂç±à³Ì¹¦Ð§¡£ÀýÈ磬¿ÉÒÔÓÃÀ´ÊµÏָ߲¢·¢µÄWebЧÀÍÆ÷¡¢WebSocketЧÀÍÆ÷¡¢TCPЧÀÍÆ÷¡¢UDPЧÀÍÆ÷µÈµÈ¡£±ðµÄ£¬Swoole»¹¿ÉÒÔºÍÖîÈçMySQL¡¢RedisµÈÆäËûµÄÊý¾Ý¿â»ººÍ´æ×é¼þÅäºÏʹÓ㬴ӶøʵÏÖ¸üΪÖØ´óµÄÍøÂç±à³ÌÐèÇó¡£
×ܽ᣺
±¾ÎÄͨ¹ýÏÈÈÝSwooleʵÏÖÒì²½ÍøÂç±à³ÌµÄÔÀíºÍʵ¼ù£¬Ïò¸÷ÈËչʾÁËSwooleµÄÇ¿Ê¢¹¦Ð§ºÍ¸ßЧÐÔÄÜ¡£Í¨¹ýÏàʶSwooleµÄµ×²ãʵÏÖÔÀíºÍ±à³Ìʵ¼ù£¬ÎÒÃÇ¿ÉÒÔ¸üºÃµØÓ¦ÓÃSwooleÀ´ÊµÏÖ¸ßЧ¡¢¸ßËÙ¡¢¸ß²¢·¢µÄÍøÂç±à³Ì¡£Í¬Ê±£¬Swoole»¹¿ÉÒÔºÍÆäËûµÄÊý¾Ý¿â»ººÍ´æ×é¼þÅäºÏʹÓ㬴ӶøÖª×ãÖÖÖÖÖØ´óµÄÍøÂç±à³ÌÐèÇó¡£ÐÅÍÐËæ×Å»¥ÁªÍøÊÖÒÕµÄÒ»Ö±Éú³¤£¬SwooleÕâÖÖ¸ßÐÔÄÜÒì²½ÍøÂçͨѶÒýÇ潫ÔÚδÀ´»ñµÃÔ½·¢ÆÕ±éµÄÓ¦Óá£
ÒÔÉϾÍÊÇSwooleʵÏÖ¸ßÐÔÄÜÒì²½ÍøÂç±à³ÌµÄÔÀíÓëʵ¼ùµÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡