2024-07-09

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

以上就是PHP HyperF -> 重叠和并发的详细内容,更多请关注php中文网其它相关文章!

https://www.php.cn/faq/866524.html

发表回复

Your email address will not be published. Required fields are marked *