当前位置:首页 > 科技  > 软件

谁说PHP不能异步和并行运行?

来源: 责编: 时间:2024-05-17 17:48:43 292观看
导读场景在处理需要远程接口调用的大量数据时,我们面临一个关键问题:串行处理导致的效率低下。如果每个接口调用需要1秒,那么即使是10条数据,也需要10秒来完成,这还没有考虑到网络延迟和接口提供方可能出现的问题。在串行执行

场景

在处理需要远程接口调用的大量数据时,我们面临一个关键问题:串行处理导致的效率低下。如果每个接口调用需要1秒,那么即使是10条数据,也需要10秒来完成,这还没有考虑到网络延迟和接口提供方可能出现的问题。在串行执行的情况下,一旦接口调用遇到问题,整个处理时间会成倍增加,这不仅降低了程序的响应速度,也增加了系统的不稳定性。4AF28资讯网——每日最新资讯28at.com

为了解决这个问题,我们可以采取以下几种优化策略:4AF28资讯网——每日最新资讯28at.com

  • 异步执行:通过异步调用远程接口,可以让程序在等待接口响应的同时继续执行其他任务,从而提高整体的处理速度。
  • 并行处理:利用多线程或多进程技术,同时发起多个远程接口调用,显著减少总的处理时间。

现有方案

远程接口案例

假设第三方或者远程接口调用伪代码如下:4AF28资讯网——每日最新资讯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/sync4AF28资讯网——每日最新资讯28at.com

业务系统案例

假设业务系统调用伪代码:4AF28资讯网——每日最新资讯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);

调用输出:4AF28资讯网——每日最新资讯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秒。4AF28资讯网——每日最新资讯28at.com

异步并行调用

这个库提供了一个小而简单的PHP PCNTL扩展的包装器。它允许并行运行不同的进程,并具有易于使用的API。官方地址:https://github.com/spatie/async4AF28资讯网——每日最新资讯28at.com

安装

您可以通过composer安装该软件包:4AF28资讯网——每日最新资讯28at.com

composer require spatie/async

注意:该扩展库异步并行执行需要所需的扩展pcntl 和 posix。没有安装在您当前的PHP运行时中, Pool 将自动回退到同步执行任务。4AF28资讯网——每日最新资讯28at.com

Pool类有一个静态方法 isSupported,你可以调用它来检查你的平台是否能够运行异步进程。4AF28资讯网——每日最新资讯28at.com

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

支持异步进程则打印true,否则为false。4AF28资讯网——每日最新资讯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);

调用输出:4AF28资讯网——每日最新资讯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秒。节省了差不多一半多时间。4AF28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-88934-0.html谁说PHP不能异步和并行运行?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 聊聊乐观锁与悲观锁

下一篇: Swift 定制 Core Data 迁移

标签:
  • 热门焦点
  • MIX Fold3包装盒泄露 新机本月登场

    小米的全新折叠屏旗舰MIX Fold3将于本月发布,近日该机的真机包装盒在网上泄露。从图上来看,新的MIX Fold3包装盒在外观设计方面延续了之前的方案,变化不大,这也是目前小米旗舰
  • 三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 慕岩炮轰抖音,百合网今何在?

    来源:价值研究所 作者:Hernanderz&ldquo;难道就因为自己的一个产品牛逼了,从客服到总裁,都不愿意正视自己产品和运营上的问题,选择逃避了吗?&rdquo;这一番话,出自百合网联合创
  • Temu起诉SHEIN,跨境电商战事升级

    来源 | 伯虎财经(bohuFN)作者 | 陈平安日前据外媒报道,拼多多旗下跨境电商平台Temu正对竞争对手SHEIN提起新诉讼,诉状称Shein&ldquo;利用市场支配力量强迫服装厂商与之签订独家
  • 自律,给不了Keep自由!

    来源 | 互联网品牌官作者 | 李大为编排 | 又耳 审核 | 谷晓辉自律能不能给用户自由暂时不好说,但大概率不能给Keep自由。近日,全球最大的在线健身平台Keep正式登陆港交所,努力
  • 华为发布HarmonyOS 4:更好玩、更流畅、更安全

    在8月4日的华为开发者大会2023(HDC.Together)大会上,HarmonyOS 4正式发布。自2019年发布以来,HarmonyOS一直以用户为中心,经历四年多的发展HarmonyOS已
  • AI芯片初创公司Tenstorrent获三星和现代1亿美元投资

    Tenstorrent是一家由芯片行业资深人士Jim Keller领导的加拿大初创公司,专注于开发人工智能芯片,该公司周三表示,已经从现代汽车集团和三星投资基金等
  • 2022爆款:ROG魔霸6 冰川散热系统持续护航

    喜逢开学季,各大商家开始推出自己的新产品,进行打折促销活动。对于忠实的端游爱好者来说,能够拥有一款梦寐以求的笔记本电脑是一件十分开心的事。但是现在的
  • 电博会与软博会实现"线下+云端"的双线融合

    在本次“电博会”与“软博会”双展会利好条件的加持下,既可以发挥展会拉动人流、信息流、资金流实现快速交互流动的作用,继而推动区域经济良性发展;又可以聚
Top