重叠和并发" />
- 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免费学习笔记(深入)”;