PHP:8.3.7 PHP HyperF:23.1.3 HyperF - 项目 HyperF 进程不要覆盖共享变量数据非常重要。过载时可能会发生这种情况。 创建 - 项目 作曲家创建项目 hyperf/hy" />
登录
首页 >  文章 >  php教程

PHP HyperF -> 重叠和并发

来源:dev.to

时间:2024-07-09 13:22:04 128浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《PHP HyperF -> 重叠和并发》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

PHP HyperF -> 重叠和并发 重叠和并发" />

  • PHP:8.3.7
  • PHP HyperF:23.1.3

HyperF - 项目

HyperF 进程不要覆盖共享变量数据非常重要。过载时可能会发生这种情况。

创建 - 项目

作曲家创建项目 hyperf/hyperf-骨骼“项目”

安装-观察者

作曲家需要 hyperf/watcher --dev

安装-UUID

作曲家需要 ramsey/uuid

服务器 - 启动

cd 项目;
php bin/hyperf.php 服务器:watch ;

HyperF-APP

APP-路由器

Router::addRoute(['GET', 'POST'], '/overlapping/data', 'AppControllerControllerOverlapping@data');
Router::addRoute(['GET', 'POST'], '/overlapping/value-a', 'AppControllerControllerOverlapping@value_a');
Router::addRoute(['GET', 'POST'], '/overlapping/value-b', 'AppControllerControllerOverlapping@value_b');
Router::addRoute(['GET', 'POST'], '/overlapping/value-c', 'AppControllerControllerOverlapping@value_c');

Router::addRoute(['GET', 'POST'], '/concurrency/data', 'AppControllerControllerConcurrency@data');
Router::addRoute(['GET', 'POST'], '/concurrency/value-a', 'AppControllerControllerConcurrency@value_a');
Router::addRoute(['GET', 'POST'], '/concurrency/value-b', 'AppControllerControllerConcurrency@value_b');
Router::addRoute(['GET', 'POST'], '/concurrency/value-c', 'AppControllerControllerConcurrency@value_c');

路径:/project/config/routes.php

APP - 控制器 - 重叠

命名空间AppController;

控制器重叠类
{
    公共$数据;

    公共函数 __construct()
    {
        $this->data='';
    }

    公共函数数据()
    {
        返回$this->数据;
    }

    公共函数 value_a()
    {
        $this->data='值A';
        返回$this->数据;
    }

    公共函数 value_b()
    {
        $this->data='值 B';
        返回$this->数据;
    }

    公共函数 value_C()
    {
        $this->data='值C';
        返回$this->数据;
    }

}

路径:/project/app/Controller/ControllerOverlapping.php

APP-控制器-控制

命名空间AppController;

使用 RamseyUuidUuid;

类控制器并发
{
    公共$数据;

    公共函数 __construct()
    {
        $this->data=array();
    }

    公共函数start()
    {
        $key=Uuid::uuid4()->toString();
        返回$键;
    }

    公共函数结束($key)
    {
        $data=$this->data[$key];
        取消设置($this->数据[$key]);
        返回$数据;
    }

    公共函数数据()
    {
        返回$this->数据;
    }

    公共函数 value_a()
    {
        $key=$this->start();
        $this->data[$key]='值A';
        $data=$this->end($key);
        返回$数据;
    }

    公共函数 value_b()
    {
        $key=Uuid::uuid4()->toString();
        $this->data[$key]='值 B';
        $data=$this->end($key);
        返回$数据;
    }

    公共函数 value_C()
    {
        $key=Uuid::uuid4()->toString();
        $this->data[$key]='值C';
        $data=$this->end($key);
        返回$数据;
    }

}

路径:/project/app/Controller/ControllerConcurrency.php

执行

GET——并发

curl“http://127.0.0.1:9501/overlapping/data”
结果: ''

卷曲“http://127.0.0.1:9501/overlapping/value-a”
结果:“值 A”

卷曲“http://127.0.0.1:9501/overlapping/data”
结果:“值 A”

卷曲“http://127.0.0.1:9501/overlapping/value-b”
结果:“值 B”

卷曲“http://127.0.0.1:9501/overlapping/data”
结果:“值 B”

获取-控制

curl“http://127.0.0.1:9501/concurrency/data”
结果: ''

卷曲“http://127.0.0.1:9501/concurrency/value-a”
结果:“值 A”

卷曲“http://127.0.0.1:9501/concurrency/data”
结果: ''

卷曲“http://127.0.0.1:9501/concurrency/value-b”
结果:“值 B”

卷曲“http://127.0.0.1:9501/concurrency/data”
结果: ''

卷曲“http://127.0.0.1:9501/concurrency/value-a”&& 
卷曲“http://127.0.0.1:9501/concurrency/value-a”&& 
卷曲“http://127.0.0.1:9501/concurrency/value-c”;
结果:“值 A”、“值 B”、“值 C”

卷曲“http://127.0.0.1:9501/concurrency/data”
结果: ''

https://github.com/thiagoeti/php-hyperf-overlapping-concurrency

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>