ओवरलैपिंग और कॉनकरेंसी" />
यह अत्यंत महत्वपूर्ण है कि हाइपरएफ प्रक्रियाएं साझा परिवर्तनीय डेटा को अधिलेखित न करें। यह अधिभार के साथ हो सकता है।
composer create-project hyperf/hyperf-skeleton "project"
composer require hyperf/watcher --dev
composer require ramsey/uuid
cd project ; php bin/hyperf.php server:watch ;
Router::addRoute(['GET', 'POST'], '/overlapping/data', 'App\Controller\ControllerOverlapping@data'); Router::addRoute(['GET', 'POST'], '/overlapping/value-a', 'App\Controller\ControllerOverlapping@value_a'); Router::addRoute(['GET', 'POST'], '/overlapping/value-b', 'App\Controller\ControllerOverlapping@value_b'); Router::addRoute(['GET', 'POST'], '/overlapping/value-c', 'App\Controller\ControllerOverlapping@value_c'); Router::addRoute(['GET', 'POST'], '/concurrency/data', 'App\Controller\ControllerConcurrency@data'); Router::addRoute(['GET', 'POST'], '/concurrency/value-a', 'App\Controller\ControllerConcurrency@value_a'); Router::addRoute(['GET', 'POST'], '/concurrency/value-b', 'App\Controller\ControllerConcurrency@value_b'); Router::addRoute(['GET', 'POST'], '/concurrency/value-c', 'App\Controller\ControllerConcurrency@value_c');
पथ: /project/config/routes.php
namespace App\Controller; class ControllerOverlapping { public $data; public function __construct() { $this->data=''; } public function data() { return $this->data; } public function value_a() { $this->data='Value A'; return $this->data; } public function value_b() { $this->data='Value B'; return $this->data; } public function value_C() { $this->data='Value C'; return $this->data; } }
पथ: /project/app/Controller/ControllerOverlapping.php
namespace App\Controller; use Ramsey\Uuid\Uuid; class ControllerConcurrency { public $data; public function __construct() { $this->data=array(); } public function start() { $key=Uuid::uuid4()->toString(); return $key; } public function end($key) { $data=$this->data[$key]; unset($this->data[$key]); return $data; } public function data() { return $this->data; } public function value_a() { $key=$this->start(); $this->data[$key]='Value A'; $data=$this->end($key); return $data; } public function value_b() { $key=Uuid::uuid4()->toString(); $this->data[$key]='Value B'; $data=$this->end($key); return $data; } public function value_C() { $key=Uuid::uuid4()->toString(); $this->data[$key]='Value C'; $data=$this->end($key); return $data; } }
पथ: /project/app/Controller/ControllerConcurrency.php
curl "http://127.0.0.1:9501/overlapping/data" Result: '' curl "http://127.0.0.1:9501/overlapping/value-a" Result: 'Value A' curl "http://127.0.0.1:9501/overlapping/data" Result: 'Value A' curl "http://127.0.0.1:9501/overlapping/value-b" Result: 'Value B' curl "http://127.0.0.1:9501/overlapping/data" Result: 'Value B'
curl "http://127.0.0.1:9501/concurrency/data" Result: '' curl "http://127.0.0.1:9501/concurrency/value-a" Result: 'Value A' curl "http://127.0.0.1:9501/concurrency/data" Result: '' curl "http://127.0.0.1:9501/concurrency/value-b" Result: 'Value B' curl "http://127.0.0.1:9501/concurrency/data" Result: '' curl "http://127.0.0.1:9501/concurrency/value-a" && \ curl "http://127.0.0.1:9501/concurrency/value-a" && \ curl "http://127.0.0.1:9501/concurrency/value-c" ; Result: 'Value A', 'Value B', 'Value C' curl "http://127.0.0.1:9501/concurrency/data" Result: ''
https://github.com/thiagoeti/php-hyperf-overlapping-concurrency
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3