尊龙凯时人生就是博

Swooleʵ¼ù£º¹¹½¨¸ßÐÔÄܵÄÐÐÁÐϵͳ

Ëæ×Å»¥ÁªÍøµÄ¿ìËÙÉú³¤ £¬ÖÖÖָ߲¢·¢³¡¾°Ò²Ô½À´Ô½Æձ顣ÔÚÕâЩ³¡¾°Ï £¬¹Å°åµÄÐÐÁÐϵͳÍùÍù»á·ºÆðÐÔÄÜÆ¿¾± £¬ÎÞ·¨Öª×ãʵʱÐÔµÄÐèÇó¡£ÎªÏàʶ¾öÕâ¸öÎÊÌâ £¬swoole×÷ΪһÖÖÊÂÎñÇý¶¯µÄ¸ßÐÔÄÜÍøÂçͨѶ¿ò¼Ü £¬³ÉΪÁËÒ»¸öºÜÊǺõÄÑ¡Ôñ¡£ÔÚ±¾ÎÄÖÐ £¬ÎÒÃǽ«ÌÖÂÛÔõÑùʹÓÃswoole¹¹½¨Ò»¸ö¸ßÐÔÄܵÄÐÐÁÐϵͳ £¬ÒÔÓ¦¶Ô¸ß²¢·¢ÓªÒµ³¡¾°ÖеÄÌôÕ½¡£

Ò»¡¢Ê²Ã´ÊÇÐÐÁÐϵͳ

Ê×ÏÈ £¬ÎÒÃÇÐèÒªÏàʶʲôÊÇÐÐÁÐϵͳ¡£ÐÐÁÐϵͳÊÇÒ»ÖÖÊý¾Ý½á¹¹ £¬ÓÃÓÚ´æ´¢ÐèÒª±»´¦ÀíµÄʹÃü»òÐÂÎÅ £¬²¢Æ¾Ö¤Ò»¶¨Ë³Ðò¾ÙÐд¦Àí¡£Í¨³£ÇéÐÎÏ £¬ÐÐÁÐϵͳʹÓÃFIFO£¨ÏȽøÏȳö£©µÄ·½·¨¾ÙÐÐʹÃü»òÐÂÎŵĴ¦Àí¡£µ±Ò»¸öʹÃü»òÐÂÎű»·ÅÈëÐÐÁÐʱ £¬Ëü¾Í³ÉΪÁËÐÐÁеÄβ²¿ £¬µ±ÐèÒª´¦ÀíʹÃü»òÐÂÎÅʱ £¬´ÓÐÐÁÐÍ·²¿×îÏÈ´¦Àí¡£ÐÐÁÐϵͳͨ³£±»ÓÃÓÚ´¦Àí¸ß¸ºÔØ¡¢¸ß²¢·¢¡¢¸ß¿ÉÓõÄÓªÒµ³¡¾° £¬ºÃ±ÈµçÉÌƽ̨¡¢É罻ƽ̨¡¢ÓÎϷƽ̨µÈ¡£

¶þ¡¢SwooleÏÈÈÝ

SwooleÊÇÒ»ÖÖ»ùÓÚPHPµÄÊÂÎñÇý¶¯µÄ¸ßÐÔÄÜÍøÂçͨѶ¿ò¼Ü £¬¾ßÓÐЭ³Ì¡¢Òì²½IO¡¢¶àÀú³Ì¡¢¶àÏ̵߳ÈÌØÕ÷¡£Ëü¿ÉÒÔ×ÊÖúPHPÓ¦ÓóÌÐòÔڸ߲¢·¢µÄÓªÒµ³¡¾°ÖлñµÃ¸üºÃµÄÐÔÄܺͿÉÀ©Õ¹ÐÔ¡£SwooleÒѳÉΪPHPÓïÑÔÖÐ×îÊܽӴýµÄ¸ßÐÔÄÜÍøÂçͨѶ¿ò¼Ü¡£SwooleÄÚÖÃÁËÒì²½TCP/UDPÍøÂç±à³Ì¡¢Òì²½Îļþϵͳ¡¢Ð­³ÌÍøÂçЧÀÍÆ÷¡¢Ò첽ʹÃü¡¢ÂþÑÜʽ°²ÅÅ¡¢Òì²½SQLiteµÈÖÖÖÖ¹¦Ð§¡£Óë¹Å°åµÄPHPÓ¦ÓóÌÐòÏà±È £¬Ê¹ÓÃSwoole¿ª·¢µÄÓ¦ÓóÌÐò¿ÉÒÔ»ñµÃ¸ü¿ìµÄÏìÓ¦ËÙÂÊ¡¢¸üÉÙµÄ×ÊÔ´Õ¼Óᢸü¸ßµÄ²¢·¢ÄÜÁ¦µÈÓŵã¡£

Èý¡¢Ê¹ÓÃSwoole¹¹½¨ÐÐÁÐϵͳ

»ùÓÚÒÔÉÏÏÈÈÝ £¬ÎÒÃÇ¿ÉÒÔʹÓÃSwooleÀ´¹¹½¨Ò»¸ö¸ßÐÔÄܵÄÐÐÁÐϵͳ¡£Ïêϸ°ì·¨ÈçÏ£º

1.Éè¼ÆÐÐÁнṹ

ÓÉÓÚÐÐÁÐϵͳÖ÷ҪʹÓÃFIFOµÄ·½·¨¾ÙÐÐʹÃü»òÐÂÎŵĴ¦Àí £¬Òò´ËÎÒÃÇÐèÒªÉè¼ÆÒ»¸öÇкÏFIFO¹æÔòµÄÐÐÁнṹ¡£ÐÐÁнṹ¿ÉÒÔʹÓÃÊý×é¡¢Á´±íµÈÊý¾Ý½á¹¹¾ÙÐÐʵÏÖ¡£

2.»ùÓÚSwooleʵÏÖÒ첽ʹÃüÐÐÁÐ

ÔÚʹÓÃSwoole¹¹½¨ÐÐÁÐϵͳµÄÀú³ÌÖÐ £¬ÎÒÃÇÐèҪʵÏÖÒ»¸öÒ첽ʹÃüÐÐÁС£Ò첽ʹÃüÐÐÁÐÓëͨË×µÄʹÃüÐÐÁвî±ð £¬ÔÚʹÓÃÒ첽ʹÃüÐÐö¾ÙÐÐʹÃü´¦Àíʱ £¬ÏµÍ³²»»áÛÕ±ÕÆÚ´ýʹÃüµÄÍê³É¡£ÕâÖÖ·½·¨¿ÉÒÔÌá¸ßϵͳµÄÍÌÍÂÁ¿ºÍЧÂÊ¡£

3.ʹÓÃSwooleʵÏÖÐÐÁеÄÏûºÄÕߺÍÉú²úÕß

ÔÚÐÐÁÐϵͳÖÐ £¬ÐèÒªÓÐÏûºÄÕߺÍÉú²úÕß¡£Éú²úÕßÌØÊâÈÏÕ潫ʹÃüѹÈëÐÐÁÐ £¬ÏûºÄÕßÈÏÕæ´ÓÐÐÁÐÖÐÈ¡³öʹÃü²¢Ö´ÐС£ÔÚʹÓÃSwoole¹¹½¨ÐÐÁÐϵͳʱ £¬ÎÒÃÇ¿ÉÒÔʹÓÃЭ³ÌÀ´ÊµÏÖÏûºÄÕߺÍÉú²úÕß¡£

4.ʹÓÃSwooleʵÏÖÂþÑÜʽÐÐÁÐ

¹ØÓڸ߲¢·¢µÄÓªÒµÐèÇó £¬ÎÒÃÇ¿ÉÄÜÐèÒª¹¹½¨Ò»¸öÂþÑÜʽÐÐÁÐϵͳ¡£ÕâÖÖÐÐÁÐϵͳ¿ÉÒÔ°ÑÐÐÁÐÖеÄʹÃü·ÖÅɵ½¶à¸öЧÀÍÆ÷ÉϾÙÐд¦Àí £¬ÒÔ¼ÓËÙʹÃüµÄ´¦ÀíËÙÂÊ¡£ÔÚʹÓÃSwoole¹¹½¨ÂþÑÜʽÐÐÁÐϵͳʱ £¬¿ÉÒÔʹÓÃSwooleÌṩµÄÂþÑÜʽ°²ÅŹ¦Ð§À´ÊµÏÖ¡£

ÒÔÉϾÍÊÇʹÓÃSwoole¹¹½¨¸ßÐÔÄÜÐÐÁÐϵͳµÄ»ù±¾°ì·¨¡£½ÓÏÂÀ´ÎÒÃǽ«ÒÔÒ»¸öµçÉÌÍøվΪÀý £¬Ïêϸ½â˵ÔõÑùʹÓÃSwoole¹¹½¨Ò»¸ö¸ßÐÔÄÜÐÐÁÐϵͳ¡£

ËÄ¡¢Ê¹ÓÃSwoole¹¹½¨µçÉÌÍøÕ¾µÄ¶©µ¥´¦ÀíÐÐÁÐ

ÔÚµçÉÌÍøÕ¾ÖÐ £¬¶©µ¥´¦ÀíÊÇÒ»¸öºÜÊÇÖ÷ÒªµÄÓªÒµ¡£ÎªÁËÓ¦¶Ô¸ß²¢·¢¡¢¸ß¸ºÔصÄÓªÒµ³¡¾° £¬ÎÒÃÇ¿ÉÒÔʹÓÃSwoole¹¹½¨Ò»¸ö¸ßÐÔÄܵĶ©µ¥´¦ÀíÐÐÁС£ÏÂÃæÊÇÏêϸ°ì·¨£º

1.Éè¼Æ¶©µ¥´¦ÀíÐÐÁнṹ

ÎÒÃÇ¿ÉÒÔʹÓÃÊý×éÀ´ÊµÏÖ¶©µ¥´¦ÀíÐÐÁÐ £¬²¢Ê¹ÓÃFIFOµÄÔ­Ôò¾ÙÐÐʹÃü´¦Àí¡£

// ¶©µ¥´¦ÀíÐÐÁнṹ
$orderQueue = array();

µÇ¼ºó¸´ÖÆ

2.»ùÓÚSwooleʵÏÖÒ첽ʹÃüÐÐÁÐ

ʹÓÃSwooleÌṩµÄTask Worker¹¦Ð§ £¬¿ÉÒÔʵÏÖÒ첽ʹÃüÐÐÁС£

// SwooleÒ첽ʹÃüÐÐÁÐ
$serv = new SwooleServer("127.0.0.1", 9501);
$serv->set(array(
    'task_worker_num' => 4,
));

$serv->on('receive', function($serv, $fd, $from_id, $data) {
    $task_id = $serv->task($data);
    echo "Dispath AsyncTask: id=$task_id
";
});

$serv->on('task', function ($serv, $task_id, $from_id, $data) use ($orderQueue) {
    $orderQueue[] = $data;
    echo "New Task: id=$task_id, data=$data
";
});

$serv->on('finish', function ($serv, $task_id, $data) {
    echo "Task Finished: id=$task_id, data=$data
";
});

$serv->start();

µÇ¼ºó¸´ÖÆ

3.ʹÓÃSwooleʵÏÖÐÐÁеÄÏûºÄÕߺÍÉú²úÕß

ÔÚÏûºÄÕ߶Ë £¬ÎÒÃÇ¿ÉÒÔʹÓÃЭ³Ì¾ÙÐÐʹÃüµÄ´¦Àí¡£ÔÚÉú²úÕ߶Ë £¬ÎÒÃÇÖ»Ð轫ʹÃüѹÈëÐÐÁм´¿É¡£

// ÏûºÄÕß
Coun(function () use ($orderQueue) {
    while (true) {
        if (!empty($orderQueue)) {
            $order = array_shift($orderQueue);
            // ´¦Àí¶©µ¥
            echo "Processing Order: $order
";
        }
        Co::sleep(0.1);
    }
});

// Éú²úÕß
for ($i = 1; $i <= 10000; $i++) {
    $data = "Order $i";
    $client = new SwooleClient(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
    $client->on("connect", function($cli) use ($data){
        $cli->send($data . PHP_EOL);
    });
    $client->connect('127.0.0.1', 9501, 0.5);
}

µÇ¼ºó¸´ÖÆ

4.ʹÓÃSwooleʵÏÖÂþÑÜʽÐÐÁÐ

ΪÁËÓ¦¶Ô¸ü¸ßµÄ²¢·¢Á¿ £¬ÎÒÃÇ¿ÉÒÔʹÓÃSwooleÌṩµÄÂþÑÜʽ¹¦Ð§ £¬ÔÚ¶à¸öЧÀÍÆ÷ÉϾÙÐÐʹÃüµÄ´¦Àí¡£

// Éú²úÕ߶Ë
for ($i = 1; $i <= 10000; $i++) {
    $data = "Order $i";
    $server_list = array(
        array('host'=>'192.168.0.100', 'port'=>9501),
        array('host'=>'192.168.0.101', 'port'=>9501),
        array('host'=>'192.168.0.102', 'port'=>9501),
        array('host'=>'192.168.0.103', 'port'=>9501),
    );
    $client = new SwooleClient(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
    $client->on("connect", function($cli) use ($data) {
        $cli->send($data . PHP_EOL);
    });
    $client->connect($server_list[array_rand($server_list)]['host'],
                     $server_list[array_rand($server_list)]['port'], 0.5);
}

// ЧÀͶË
$serv = new SwooleServer("127.0.0.1", 9501);

$serv->set(array(
    'task_worker_num' => 4,
    'worker_num' => 4,
    'task_ipc_mode' => 3,
    'message_queue_key' => 0x70001001,
));

$serv->on('receive', function($serv, $fd, $from_id, $data) {
    $task_id = $serv->task($data);
    echo "Dispath AsyncTask: id=$task_id
";
});

$serv->on('task', function ($serv, $task_id, $from_id, $data) use ($orderQueue) {
    $orderQueue[] = $data;
    echo "New Task: id=$task_id, data=$data
";
    $serv->finish($data);
});

$serv->on('finish', function ($serv, $task_id, $data) {
    echo "Task Finished: id=$task_id, data=$data
";
});

$serv->start();

µÇ¼ºó¸´ÖÆ

ͨ¹ýÒÔÉÏ´úÂë £¬ÎÒÃǾͿÉÒÔÀֳɵØʹÓÃSwoole¹¹½¨Ò»¸ö¸ßÐÔÄܵĶ©µ¥´¦ÀíÐÐÁС£Õâ¸öÐÐÁÐϵͳ¼È¿ÉÒÔÓ¦¶Ô¸ß²¢·¢¡¢¸ß¸ºÔصij¡¾° £¬Ò²Ö§³ÖÂþÑÜʽ°²ÅÅ¡£ÎÒÃÇ¿ÉÒÔͨ¹ýÓÅ»¯Õâ¸ö»ù´¡ÐÐÁÐϵͳÀ´¹¹½¨Ô½·¢Öش󡢸ßЧµÄÓªÒµ³¡¾°¡£

Îå¡¢×ܽá

±¾ÎÄÖ÷ÒªÌÖÂÛÁËÔõÑùʹÓÃSwoole¹¹½¨¸ßÐÔÄܵÄÐÐÁÐϵͳ £¬ÒÔÓ¦¶Ô¸ß²¢·¢¡¢¸ß¸ºÔصÄÓªÒµ³¡¾°¡£ÎÒÃÇͨ¹ýÉÏÃæµÄʾÀý £¬ÏêϸÏÈÈÝÁË»ùÓÚSwooleµÄÒ첽ʹÃüÐÐÁС¢ÏûºÄÕߺÍÉú²úÕß £¬ÒÔ¼°ÂþÑÜʽÐÐÁеĹ¹½¨ÒªÁ졣ϣÍû±¾ÎĶԶÁÕßÃ÷È·ºÍʹÓÃSwoole´òÔì¸ßÐÔÄÜÐÐÁÐϵͳÓÐËù×ÊÖú¡£

ÒÔÉϾÍÊÇSwooleʵ¼ù£º¹¹½¨¸ßÐÔÄܵÄÐÐÁÐϵͳµÄÏêϸÄÚÈÝ £¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡

ÃâÔð˵Ã÷£ºÒÔÉÏչʾÄÚÈÝȪԴÓÚÏàÖúýÌå¡¢ÆóÒµ»ú¹¹¡¢ÍøÓÑÌṩ»òÍøÂçÍøÂçÕûÀí £¬°æȨÕùÒéÓë±¾Õ¾ÎÞ¹Ø £¬ÎÄÕÂÉæ¼°¿´·¨Óë¿´·¨²»´ú±í尊龙凯时人生就是博ÂËÓÍ»úÍø¹Ù·½Ì¬¶È £¬Çë¶ÁÕß½ö×ö²Î¿¼¡£±¾ÎĽӴýתÔØ £¬×ªÔØÇë˵Ã÷À´ÓÉ¡£ÈôÄúÒÔΪ±¾ÎÄÇÖÕ¼ÁËÄúµÄ°æȨÐÅÏ¢ £¬»òÄú·¢Ã÷¸ÃÄÚÈÝÓÐÈκÎÉæ¼°ÓÐÎ¥¹«µÂ¡¢Ã°·¸Ö´·¨µÈÎ¥·¨ÐÅÏ¢ £¬ÇëÄúÁ¬Ã¦ÁªÏµ尊龙凯时人生就是博ʵʱÐÞÕý»òɾ³ý¡£

Ïà¹ØÐÂÎÅ

ÁªÏµ尊龙凯时人生就是博

18523999891

¿É΢ÐÅÔÚÏß×Éѯ

ÊÂÇéʱ¼ä£ºÖÜÒ»ÖÁÖÜÎå £¬9:30-18:30 £¬½ÚãåÈÕÐÝÏ¢

QR code
sitemap¡¢ÍøÕ¾µØͼ