网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

swoole协程的示例分析

小编给大家分享一下swoole协程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

致力于企业形象建设和产品!多年来,创新互联建站不忘初心,以建立行业服务标杆为目标,不断提升技术设计服务水平,帮助客户在互联网推广自己的产品、服务,为客户创造价值从而实现自身价值!中小型企业如何做成都品牌网站建设?初创业公司建站预算不足?

linux上已安装了swoole。目前的最新版是 4.5.9(2020-12-17)

构造一个需求,一下创建5个协程,每个协程休眠1到3秒之间的随机数,然后打印出睡眠时间,希望所有的程序结束时,整个耗时是最长3秒。

1.php

foreach (range(1, 5) as $v) {
    go(function () {
        $sleep_time = random_int(1, 3);
        sleep($sleep_time);
        echo "睡眠了" . $sleep_time . "秒\n";
    });}

用php 1.php执行,程序能执行,但是感觉不像是协程,而是同步执行的。整个执行下来远远超过3秒。原来这里有个小bug,应该使用 co:sleep, 这样才会在本协程内睡眠,而不影响整个程序。

2.php

foreach (range(1, 5) as $v) {
    go(function () {
        $sleep_time = random_int(1, 3);
        co::sleep($sleep_time);
        echo "睡眠了" . $sleep_time . "秒\n";
    });}

结果如下:

睡眠了1秒
睡眠了2秒
睡眠了2秒
睡眠了3秒
睡眠了3秒

总之一定是睡眠少的协程先退出,而且,睡眠了同样时间的协程是同时打印出字符的。并且程序结束时的总共耗时就是3秒,说明并发成功。

现在希望5个协程结束后,能打印出hello world!

3.php

foreach (range(1, 5) as $v) {
    go(function () {
        $sleep_time = random_int(1, 3);
        co::sleep($sleep_time);
        $a = random_int(1, 1000);
        echo "睡眠了" . $sleep_time . "秒\n";
    });}echo "hello world!\n";

结果又出问题了,hello world 总是最先打印出来。
所以,这里需要使用协程容器这个东东。

4.php

Co\run(function () {
    foreach (range(1, 5) as $v) {
        go(function ()  {
            $sleep_time = random_int(1, 3);
            co::sleep($sleep_time);
            echo "睡眠了" . $sleep_time . "秒\n";
        });
    }});echo "hello world!\n";

结果如下:

睡眠了1秒
睡眠了2秒
睡眠了3秒
睡眠了3秒
睡眠了3秒
hello world!

这次就能打印出正确结果了,perfect!

以上是“swoole协程的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


当前标题:swoole协程的示例分析
文章起源:http://bjjierui.cn/article/gsopdh.html

其他资讯