日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

誰說PHP不能異步和并行運行?

來源: 責編: 時間:2024-05-17 17:48:43 196觀看
導讀場景在處理需要遠程接口調用的大量數據時,我們面臨一個關鍵問題:串行處理導致的效率低下。如果每個接口調用需要1秒,那么即使是10條數據,也需要10秒來完成,這還沒有考慮到網絡延遲和接口提供方可能出現的問題。在串行執行

場景

在處理需要遠程接口調用的大量數據時,我們面臨一個關鍵問題:串行處理導致的效率低下。如果每個接口調用需要1秒,那么即使是10條數據,也需要10秒來完成,這還沒有考慮到網絡延遲和接口提供方可能出現的問題。在串行執行的情況下,一旦接口調用遇到問題,整個處理時間會成倍增加,這不僅降低了程序的響應速度,也增加了系統的不穩定性。Dtc28資訊網——每日最新資訊28at.com

為了解決這個問題,我們可以采取以下幾種優化策略:Dtc28資訊網——每日最新資訊28at.com

  • 異步執行:通過異步調用遠程接口,可以讓程序在等待接口響應的同時繼續執行其他任務,從而提高整體的處理速度。
  • 并行處理:利用多線程或多進程技術,同時發起多個遠程接口調用,顯著減少總的處理時間。

現有方案

遠程接口案例

假設第三方或者遠程接口調用偽代碼如下:Dtc28資訊網——每日最新資訊28at.com

<?phppublic function sync(): /support/Response{    sleep(1);    return json(['data' => date('Y-m-d H:i:s')]);}

接口調用訪問地址:http://127.0.0.1:8888/index/syncDtc28資訊網——每日最新資訊28at.com

業務系統案例

假設業務系統調用偽代碼:Dtc28資訊網——每日最新資訊28at.com

<?phpdeclare(strict_types=1);foreach (range(1, 10) as $key) {    $list[] = file_get_contents("http://127.0.0.1:8888/index/sync");}print_r($list);

調用輸出:Dtc28資訊網——每日最新資訊28at.com

[x] [系統調用耗時時間] 10.138074159622Array(    [0] => {"data":"2024-05-16 22:38:00"}    [1] => {"data":"2024-05-16 22:38:01"}    [2] => {"data":"2024-05-16 22:38:02"}    [3] => {"data":"2024-05-16 22:38:03"}    [4] => {"data":"2024-05-16 22:38:04"}    [5] => {"data":"2024-05-16 22:38:05"}    [6] => {"data":"2024-05-16 22:38:06"}    [7] => {"data":"2024-05-16 22:38:07"}    [8] => {"data":"2024-05-16 22:38:08"}    [9] => {"data":"2024-05-16 22:38:09"})

可以看出上面是按順序調用接口,總共耗時10.14秒。Dtc28資訊網——每日最新資訊28at.com

異步并行調用

這個庫提供了一個小而簡單的PHP PCNTL擴展的包裝器。它允許并行運行不同的進程,并具有易于使用的API。官方地址:https://github.com/spatie/asyncDtc28資訊網——每日最新資訊28at.com

安裝

您可以通過composer安裝該軟件包:Dtc28資訊網——每日最新資訊28at.com

composer require spatie/async

注意:該擴展庫異步并行執行需要所需的擴展pcntl 和 posix。沒有安裝在您當前的PHP運行時中, Pool 將自動回退到同步執行任務。Dtc28資訊網——每日最新資訊28at.com

Pool類有一個靜態方法 isSupported,你可以調用它來檢查你的平臺是否能夠運行異步進程。Dtc28資訊網——每日最新資訊28at.com

require '../vendor/autoload.php';use Spatie/Async/Pool;var_dump(Pool::isSupported());

支持異步進程則打印true,否則為false。Dtc28資訊網——每日最新資訊28at.com

使用

<?php/** * @author Tinywan(ShaoBo Wan) * @date 2024/5/21 14:00 */declare(strict_types=1);require '../vendor/autoload.php';use Spatie/Async/Pool;$timeOne = microtime(true);$pool = Pool::create();foreach (range(1, 10) as $item) {    $pool[] = async(function () use ($item) {        return file_get_contents("http://127.0.0.1:8888/index/sync");    })->then(function (string $output) use (&$list) {        // Handle success        $list[] = $output;    })->catch(function (Throwable $exception) {        // Handle exception        echo '[x] [異常] ' . $exception->getMessage() . PHP_EOL;    });}await($pool);$timeTwo = microtime(true);echo '[x] [系統調用耗時時間] ' . ($timeTwo - $timeOne) . PHP_EOL,print_r($list);

調用輸出:Dtc28資訊網——每日最新資訊28at.com

[x] [系統調用耗時時間] 4.3443310260773Array(    [0] => {"data":"2024-05-16 22:53:47"}    [1] => {"data":"2024-05-16 22:53:47"}    [2] => {"data":"2024-05-16 22:53:47"}    [3] => {"data":"2024-05-16 22:53:47"}    [4] => {"data":"2024-05-16 22:53:47"}    [5] => {"data":"2024-05-16 22:53:47"}    [6] => {"data":"2024-05-16 22:53:47"}    [7] => {"data":"2024-05-16 22:53:47"}    [8] => {"data":"2024-05-16 22:53:48"}    [9] => {"data":"2024-05-16 22:53:49"})

可以看出上面是按并行調用接口,總共耗時4.34秒。節省了差不多一半多時間。Dtc28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-88934-0.html誰說PHP不能異步和并行運行?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 聊聊樂觀鎖與悲觀鎖

下一篇: Swift 定制 Core Data 遷移

標簽:
  • 熱門焦點
  • 5月iOS設備性能榜:M1 M2依舊是榜單前五

    和上個月一樣,沒有新品發布的iOS設備性能榜的上榜設備并沒有什么更替,僅僅只有跑分變化而產生的排名變動,剛剛開始的蘋果WWDC2023,推出的產品也依舊是新款Mac Pro、新款Mac Stu
  • 三言兩語說透設計模式的藝術-單例模式

    寫在前面單例模式是一種常用的軟件設計模式,它所創建的對象只有一個實例,且該實例易于被外界訪問。單例對象由于只有一個實例,所以它可以方便地被系統中的其他對象共享,從而減少
  • 學習JavaScript的10個理由...

    作者 | Simplilearn編譯 | 王瑞平當你決心學習一門語言的時候,很難選擇到底應該學習哪一門,常用的語言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 一篇文章帶你了解 CSS 屬性選擇器

    屬性選擇器對帶有指定屬性的 HTML 元素設置樣式。可以為擁有指定屬性的 HTML 元素設置樣式,而不僅限于 class 和 id 屬性。一、了解屬性選擇器CSS屬性選擇器提供了一種簡單而
  • 最“俊美”淘寶賣家,靠直播和短視頻圈粉,上架秒光,年銷3000萬

    來源 | 電商在線文|易琬玉編輯|斯問受訪店鋪:Ringdoll戒之人形圖源:微博@御座的黃山、&ldquo;Ringdoll戒之人形&rdquo;淘寶店鋪有關外貌的評價,黃山已經聽累了。生于1985年的他,哪
  • 騰訊VS網易,最卷游戲暑期檔,誰能笑到最后?

    作者:無銹缽來源:財經無忌7月16日晚,上海1862時尚藝術中心。伴隨著幻象的精準命中,碩大的熒幕之上,比分被定格在了14:12,被寄予厚望的EDG戰隊以絕對的優勢戰勝了BLG戰隊,拿下了總決
  • 網紅炒股不為了賺錢,那就是耍流氓!

    來源:首席商業評論6月26日高調宣布入市,網絡名嘴大v胡錫進居然進軍了股市。在一次財經媒體峰會上,幾個財經圈媒體大佬就&ldquo;胡錫進炒股是否知道認真報道&rdquo;展開討論。有
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創 作者|程心 羅輯2023年之前,對于自己的&ldquo;今天&rdquo;,百度也很迷茫。&ldquo;新業務到 2022 年底還是 0,希望 2023 年出來一個 1。&rdquo;這是2022年底,李彥宏
  • OPPO K11評測:旗艦級IMX890加持 2000元檔最強影像手機

    【Techweb評測】中端機型用戶群體巨大,占了中國目前手機市場的大頭,一直以來都是各手機品牌的“必爭之地”,其中OPPO K系列機型一直以來都以高品質、
Top 主站蜘蛛池模板: 五莲县| 类乌齐县| 深圳市| 沐川县| 尼玛县| 黔西县| 上饶县| 黄大仙区| 峨边| 浦城县| 荔波县| 杭州市| 裕民县| 全南县| 吴旗县| 抚顺县| 永福县| 西充县| 华阴市| 肃北| 平山县| 游戏| 阜阳市| 桦南县| 监利县| 修水县| 宁城县| 通道| 江达县| 内乡县| 抚松县| 南投县| 饶平县| 陈巴尔虎旗| 壶关县| 西林县| 乌什县| 平邑县| 塔城市| 淳安县| 平南县|