{"id":628,"title":"hyperf\u534f\u7a0b\u5e94\u7528\u5b9e\u4f8b\u53ca\u534f\u7a0b\u6267\u884c\u6d41\u7a0b","good":0,"bad":0,"hit":1171,"created_at":"2024-01-18 22:40:01","content":"

hyperf\u4e2d\u534f\u7a0b\u7684\u51e0\u79cd\u5e94\u7528\u5b9e\u4f8b\uff1a<\/strong><\/p>

\u8fd4\u56de\u7ed3\u679c\u5982\u4e0b\uff1a<\/strong><\/p>

{<\/strong><\/p>

  "code": 200,<\/strong><\/p>

  "errors": {<\/strong><\/p>

    "msg": [<\/strong><\/p>

      {<\/strong><\/p>

        "eg1": [<\/strong><\/p>

          "www.hu-rong.com",<\/strong><\/p>

          "www.hu-rong.com"<\/strong><\/p>

        ],<\/strong><\/p>

        "eg2": [<\/strong><\/p>

          "www.hu-rong.com",<\/strong><\/p>

          "www.hu-rong.com"<\/strong><\/p>

        ],<\/strong><\/p>

        "eg3": {<\/strong><\/p>

          "parallel1": "www.hu-rong.com",<\/strong><\/p>

          "parallel2": "www.hu-rong.com"<\/strong><\/p>

        },<\/strong><\/p>

        "eg4": [<\/strong><\/p>

          "001223",<\/strong><\/p>

          "\u4e2d\u6587\u540d\u79f0"<\/strong><\/p>

        ]<\/strong><\/p>

      }<\/strong><\/p>

    ]<\/strong><\/p>

  }<\/strong><\/p>

}<\/strong><\/p>

<\/p>

<?php<\/span><\/p>

<\/span><\/p>

declare(strict_types=1);<\/span><\/p>

<\/span><\/p>

namespace App\\Controller;<\/span><\/p>

<\/span><\/p>

use App\\Model\\StockCompany;<\/span><\/p>

use App\\Request\\StockIndexRequest;<\/span><\/p>

use App\\Service\\StockService;<\/span><\/p>

use App\\Service\\UserService;<\/span><\/p>

use Hyperf\\Di\\Annotation\\Inject;<\/span><\/p>

use Hyperf\\Utils\\Parallel;<\/span><\/p>

use Hyperf\\View\\RenderInterface;<\/span><\/p>

use Swoole\\Coroutine\\Channel;<\/span><\/p>

use Hyperf\\Utils\\WaitGroup;<\/span><\/p>

<\/span><\/p>

<\/span><\/p>

class IndexController extends AbstractController<\/span><\/p>

{<\/span><\/p>

<\/p>

    public function test()<\/span><\/p>

    {<\/span><\/p>

        return $this->responseSuccess(<\/span><\/p>

            [<\/span><\/p>

                'eg1' => self::_test1(),<\/span><\/p>

                'eg2' => self::_test2(),<\/span><\/p>

                'eg3' => self::_test3(),<\/span><\/p>

                'eg4' => self::_test4(),<\/span><\/p>

            ]<\/span><\/p>

        );<\/span><\/p>

    }<\/span><\/p>

<\/span><\/p>

    private function _test4()<\/span><\/p>

    {<\/span><\/p>

        $result = parallel([<\/span><\/p>

            function () {<\/span><\/p>

            \/\/\u6ce8\u610f:\u8981\u7528return\u8fd4\u56de\u7ed3\u679c<\/span><\/p>

                return StockCompany::first()->code;<\/span><\/p>

            },<\/span><\/p>

            function () {<\/span><\/p>

                return StockCompany::first()->stock_name;<\/span><\/p>

            }<\/span><\/p>

        ]);<\/span><\/p>

        return $result;<\/span><\/p>

    }<\/span><\/p>

<\/span><\/p>

    private function _test3()<\/span><\/p>

    {<\/span><\/p>

        $parallel = new Parallel();<\/span><\/p>

        $parallel->add(function () {<\/span><\/p>

            var_dump('parallel-step-1');<\/span><\/p>

            return self::_me();\/\/\u6ce8\u610f:\u8981\u7528return\u8fd4\u56de\u7ed3\u679c<\/span><\/p>

        }, 'parallel1');<\/span><\/p>

        $parallel->add(function () {<\/span><\/p>

            var_dump('parallel-step-3');<\/span><\/p>

            return self::_me();<\/span><\/p>

        }, 'parallel2');<\/span><\/p>

        var_dump('parallel-step-3');<\/span><\/p>

        $result = $parallel->wait();<\/span><\/p>

        var_dump('parallel-step-4');<\/span><\/p>

        return $result;<\/span><\/p>

    }<\/span><\/p>

<\/span><\/p>

    private function _test2()<\/span><\/p>

    {<\/span><\/p>

        $wg = new WaitGroup();<\/span><\/p>

        $result = [];<\/span><\/p>

        var_dump('waitgroup-step-1');<\/span><\/p>

        $wg->add(2);<\/span><\/p>

        co(function () use ($wg, &$result) {<\/span><\/p>

            var_dump('waitgroup-step-2');<\/span><\/p>

            $result[] = self::_me();<\/span><\/p>

            var_dump('waitgroup-step-3');<\/span><\/p>

            $wg->done();<\/span><\/p>

            var_dump('waitgroup-step-4');<\/span><\/p>

        });<\/span><\/p>

        co(function () use ($wg, &$result) {<\/span><\/p>

            var_dump('waitgroup-step-5');<\/span><\/p>

            $result[] = self::_me();<\/span><\/p>

            var_dump('waitgroup-step-6');<\/span><\/p>

            $wg->done();<\/span><\/p>

            var_dump('waitgroup-step-7');<\/span><\/p>

        });<\/span><\/p>

        var_dump('waitgroup-step-8');<\/span><\/p>

        $wg->wait();<\/span><\/p>

        var_dump('waitgroup-step-9');<\/span><\/p>

        return $result;<\/span><\/p>

    }<\/span><\/p>

<\/span><\/p>

chnnale\u65b9\u5f0f\u53ca\u6267\u884c\u6d41\u7a0b\uff1a\u5176\u5b83\u51e0\u79cd\u65b9\u5f0f\u4e5f\u662f\u7c7b\u4f3c\u7684\uff0c\u9047\u5230\u963b\u585e\u5c06\u4f1a\u8fdb\u884c\u534f\u7a0b\u5207\u6362<\/span><\/p>

<\/span><\/p>

string(14) "channel-step-1"<\/span><\/p>

string(14) "channel-step-2"<\/span><\/p>

string(14) "channel-step-4"<\/span><\/p>

string(14) "channel-step-5"<\/span><\/p>

string(14) "channel-step-7"<\/span><\/p>

[INFO] \u3010request\u3011:url:https:\/\/api.hu-rong.com\/about,method:get,\u53c2\u6570:[]<\/span><\/p>

[INFO] \u3010request\u3011:url:https:\/\/api.hu-rong.com\/about,method:get,\u53c2\u6570:[]<\/span><\/p>

[INFO] \u3010request-result\u3011{"banners":["https:\\\/\\\/api.hu-rong.com\\https:\/\/api.hu-rong.com\/uploads\\\/good\\\/20140321112913s.jpg","https:\\\/\\\/api.hu-rong.c<\/span><\/p>

[INFO] \u3010request-result\u3011{"banners":["https:\\\/\\\/api.hu-rong.com\\https:\/\/api.hu-rong.com\/uploads\\\/good\\\/20140321112913s.jpg","https:\\\/\\\/api.hu-rong.c<\/span><\/p>

string(14) "channel-step-6"<\/span><\/p>

string(14) "channel-step-8"<\/span><\/p>

string(14) "channel-step-3"<\/span><\/p>

<\/span><\/p>

    private function _test1()<\/span><\/p>

    {<\/span><\/p>

        $channel = new Channel();<\/span><\/p>

        var_dump('channel-step-1');<\/span><\/p>

        co(function () use ($channel) {<\/span><\/p>

            var_dump('channel-step-2');<\/span><\/p>

            $website = self::_me();<\/span><\/p>

            var_dump('channel-step-3');<\/span><\/p>

            $channel->push($website);<\/span><\/p>

        });<\/span><\/p>

        var_dump('channel-step-4');<\/span><\/p>

        co(function () use ($channel) {<\/span><\/p>

            var_dump('channel-step-5');<\/span><\/p>

            $website = self::_me();<\/span><\/p>

            var_dump('channel-step-6');<\/span><\/p>

            $channel->push($website);<\/span><\/p>

        });<\/span><\/p>

        var_dump('channel-step-7');<\/span><\/p>

        $result[] = $channel->pop();<\/span><\/p>

        var_dump('channel-step-8');<\/span><\/p>

        $result[] = $channel->pop();<\/span><\/p>

<\/span><\/p>

        return $result;<\/span><\/p>

    }<\/span><\/p>

<\/p>

<\/span><\/p>

    private function _me()<\/span><\/p>

    {<\/span><\/p>

        $url = 'https:\/\/api.hu-rong.com\/about';<\/span><\/p>

        try {<\/span><\/p>

            $res = $this->httpRequestService->request('get', $url, []);<\/span><\/p>

            $res = json_decode($res, true);<\/span><\/p>

            $res = $res ? $res['about'][8][1] : '';<\/span><\/p>

        } catch (\\Exception $e) {<\/span><\/p>

            $res = '';<\/span><\/p>

        }<\/span><\/p>

        return $res;<\/span><\/p>

    }<\/span><\/p>

}<\/span><\/p>

<\/p>"}