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

當(dāng)前位置:首頁 > 科技  > 軟件

讓我們認(rèn)識(shí)一下PHP非阻塞并發(fā)框架Amp

來源: 責(zé)編: 時(shí)間:2024-05-27 17:24:55 224觀看
導(dǎo)讀什么是異步編程?當(dāng)使用PHP編寫的應(yīng)用程序I/O任務(wù)時(shí),程序會(huì)在執(zhí)行某個(gè)任務(wù)之前,一定要等待之前的任務(wù)完成,這時(shí)CPU會(huì)有很多時(shí)間處于空閑狀態(tài),這不僅會(huì)降低應(yīng)用程序性能,還會(huì)降低硬件利用率。比如,當(dāng)程序需要從數(shù)據(jù)庫中讀取大

什么是異步編程?

當(dāng)使用PHP編寫的應(yīng)用程序I/O任務(wù)時(shí),程序會(huì)在執(zhí)行某個(gè)任務(wù)之前,一定要等待之前的任務(wù)完成,這時(shí)CPU會(huì)有很多時(shí)間處于空閑狀態(tài),這不僅會(huì)降低應(yīng)用程序性能,還會(huì)降低硬件利用率。比如,當(dāng)程序需要從數(shù)據(jù)庫中讀取大量的數(shù)據(jù)時(shí),由于需要等待I/O操作完成,程序的執(zhí)行速度會(huì)非常緩慢。Hdq28資訊網(wǎng)——每日最新資訊28at.com

因此,我們通過事件庫,在程序執(zhí)行的過程中,不需要等待某個(gè)任務(wù)完成才能執(zhí)行下一個(gè)任務(wù)。這種編程模式可以極大地提高程序的效率和響應(yīng)速度,尤其在處理復(fù)雜的I/O操作時(shí)表現(xiàn)得更為出色,而這就是異步編程。Hdq28資訊網(wǎng)——每日最新資訊28at.com

Amphp

Amphp/Amp 是一個(gè)輕量級(jí)、高效的PHP異步庫,為開發(fā)人員提供了一種處理I/O密集型任務(wù)和網(wǎng)絡(luò)操作的新方式。它基于coroutine(協(xié)程)模型,讓你能夠編寫出并發(fā)執(zhí)行的任務(wù),從而最大化服務(wù)器資源利用率,提高應(yīng)用性能。Hdq28資訊網(wǎng)——每日最新資訊28at.com

核心技術(shù)

Amp的核心是它的事件循環(huán)和coroutine(協(xié)程)支持。事件循環(huán)監(jiān)聽系統(tǒng)級(jí)別的事件,如文件描述符的狀態(tài)變化或定時(shí)器觸發(fā),而coroutine則允許代碼在不阻塞主線程的情況下進(jìn)行暫停和恢復(fù)。這種設(shè)計(jì)使得開發(fā)者可以以同步代碼的風(fēng)格編寫異步程序,降低了異步編程的學(xué)習(xí)曲線。Hdq28資訊網(wǎng)——每日最新資訊28at.com

此外,Amp還提供了Promise/Try機(jī)制,這是一套處理異步操作成功與失敗的工具。通過Promise對(duì)象,你可以輕松地鏈?zhǔn)教幚懋惒讲僮鳎?yōu)雅地處理錯(cuò)誤。Hdq28資訊網(wǎng)——每日最新資訊28at.com

應(yīng)用場(chǎng)景

  • 網(wǎng)絡(luò)I/O: Amp非常適合處理大量HTTP請(qǐng)求、TCP連接或其他網(wǎng)絡(luò)通信,如:Websocket。它可以并行處理這些連接,顯著提升Web服務(wù)的吞吐量。
  • 數(shù)據(jù)庫交互: 異步數(shù)據(jù)庫操作可以大大提高數(shù)據(jù)讀取和寫入的速度,尤其是在需要處理多個(gè)查詢時(shí)。
  • 文件系統(tǒng)操作: 讀寫大文件或者遍歷大量目錄時(shí),Amp可以通過異步操作避免阻塞主線程。
  • 后臺(tái)任務(wù): 對(duì)于耗時(shí)較長(zhǎng)的后臺(tái)任務(wù),如數(shù)據(jù)處理、爬蟲或批量更新,Amp可以實(shí)現(xiàn)更快的執(zhí)行速度。

AMPHP是一個(gè)事件驅(qū)動(dòng)的PHP庫集合,設(shè)計(jì)時(shí)考慮了纖程和并發(fā)性。amphp/amp專門提供了future和cancellation作為異步編程的基本原語。我們現(xiàn)在使用Revolt,而不是使用amphp/amp發(fā)布事件循環(huán)實(shí)現(xiàn)。Hdq28資訊網(wǎng)——每日最新資訊28at.com

PHP大量使用PHP 8.1附帶的纖程來編寫異步代碼,就像同步、阻塞代碼一樣。與早期版本相比,不需要基于生成器的協(xié)程或回調(diào)。與線程類似,每個(gè)纖程都有自己的調(diào)用堆棧,但纖程由事件循環(huán)協(xié)同調(diào)度。使用Amp/async()并發(fā)運(yùn)行。Hdq28資訊網(wǎng)——每日最新資訊28at.com

動(dòng)機(jī)

傳統(tǒng)上,PHP遵循順序執(zhí)行模型。PHP引擎按順序一行接一行地執(zhí)行。然而,程序通常由多個(gè)獨(dú)立的子程序組成,這些子程序可以同時(shí)執(zhí)行。Hdq28資訊網(wǎng)——每日最新資訊28at.com

如果查詢數(shù)據(jù)庫,則以阻塞方式發(fā)送查詢并等待數(shù)據(jù)庫服務(wù)器的響應(yīng)。一旦你有了答案,你就可以開始做下一件事。我們可以發(fā)送下一個(gè)數(shù)據(jù)庫查詢,或者對(duì)一個(gè)API執(zhí)行HTTP調(diào)用,而不是坐在那里什么也不做。讓我們利用我們通?;ㄔ诘却齀/O上的時(shí)間!Hdq28資訊網(wǎng)——每日最新資訊28at.com

Revolt允許這樣的并發(fā)I/O操作。我們通過避免回調(diào)來保持低認(rèn)知負(fù)荷。我們的API可以像任何其他庫一樣使用,除了它們也可以并發(fā)工作,因?yàn)槲覀冊(cè)诤笈_(tái)使用了非阻塞I/O。使用Amp/async()并發(fā)運(yùn)行,并在需要時(shí)使用Future::await()等。Hdq28資訊網(wǎng)——每日最新資訊28at.com

多年來,在PHP中實(shí)現(xiàn)并發(fā)的技術(shù)有很多,例如PHP 5中的回調(diào)和生成器。這些方法都有“你的函數(shù)是什么顏色”的問題,我們通過PHP 8.1中的Fibers解決了這個(gè)問題。它們?cè)试S多個(gè)獨(dú)立調(diào)用堆棧的并發(fā)性。Hdq28資訊網(wǎng)——每日最新資訊28at.com

纖程由事件循環(huán)協(xié)同調(diào)度,這就是為什么它們也被稱為協(xié)程。重要的是要理解,在任何給定的時(shí)間只有一個(gè)協(xié)程在運(yùn)行,所有其他協(xié)程在此期間暫停。Hdq28資訊網(wǎng)——每日最新資訊28at.com

你可以將協(xié)程比作一臺(tái)使用單個(gè)CPU內(nèi)核運(yùn)行多個(gè)程序的計(jì)算機(jī)。每個(gè)程序都有一個(gè)執(zhí)行時(shí)間段。然而,協(xié)程并不是搶占式的。他們沒有固定的時(shí)間。他們必須主動(dòng)給予事件循環(huán)的控制權(quán)。Hdq28資訊網(wǎng)——每日最新資訊28at.com

任何阻塞I/O函數(shù)在等待I/O時(shí)阻塞整個(gè)進(jìn)程。你會(huì)想要避開他們。如果你還沒有閱讀安裝指南,可以看看Hello World示例,它演示了阻塞函數(shù)的效果。AMPHP提供的庫避免了I/O阻塞。Hdq28資訊網(wǎng)——每日最新資訊28at.com

安裝

此包可以作為Composer依賴項(xiàng)安裝。Hdq28資訊網(wǎng)——每日最新資訊28at.com

composer require amphp/amp

如果您使用這個(gè)庫,很可能希望使用Revolt來調(diào)度事件,您應(yīng)該單獨(dú)要求Revolt,即使它是作為依賴項(xiàng)自動(dòng)安裝的。Hdq28資訊網(wǎng)——每日最新資訊28at.com

composer require revolt/event-loop

這些包為PHP中的異步/并發(fā)應(yīng)用程序提供了基本的構(gòu)建塊。我們提供了很多建立在這些基礎(chǔ)上的軟件包。Hdq28資訊網(wǎng)——每日最新資訊28at.com

例如以下Hdq28資訊網(wǎng)——每日最新資訊28at.com

  • amphp/byte-stream提供流抽象
  • amphp/socket為UDP和TCP(包括TLS)提供套
  • amphp/parallel提供并行處理以利用多個(gè)CPU內(nèi)核并卸載阻塞操作
  • amphp/http-client提供HTTP/1.1和HTTP/2客戶端
  • amphp/http-server提供HTTP/1.1和HTTP/2應(yīng)用服務(wù)器
  • amphp/mysql和amphp/postgres用于非阻塞數(shù)據(jù)庫訪問

要求

此軟件包需要PHP 8.1或更高版本。無需擴(kuò)展!僅當(dāng)應(yīng)用需要大量并發(fā)套接字連接時(shí)才需要擴(kuò)展,通常此限制配置為最多1024個(gè)文件描述符。Hdq28資訊網(wǎng)——每日最新資訊28at.com

使用

協(xié)程

協(xié)同程序是可中斷的功能。在PHP中,它們可以使用纖程來實(shí)現(xiàn)。Hdq28資訊網(wǎng)——每日最新資訊28at.com

以前版本的JavaScript使用生成器來實(shí)現(xiàn)類似的目的,但是纖程可以在調(diào)用堆棧中的任何地方中斷,這使得以前的樣板文件(如Amp/call())變得不必要。Hdq28資訊網(wǎng)——每日最新資訊28at.com

在任何給定的時(shí)間,只有一個(gè)纖程在運(yùn)行。當(dāng)協(xié)程掛起時(shí),協(xié)程的執(zhí)行會(huì)暫時(shí)中斷,允許其他任務(wù)運(yùn)行。一旦計(jì)時(shí)器到期,流操作可能,或任何等待的Future完成,執(zhí)行將恢復(fù)。Hdq28資訊網(wǎng)——每日最新資訊28at.com

協(xié)同程序的低級(jí)掛起和恢復(fù)由Revolt的SuspensionAPI處理。Hdq28資訊網(wǎng)——每日最新資訊28at.com

<?phprequire __DIR__ . '/vendor/autoload.php';use Revolt/EventLoop;$suspension = EventLoop::getSuspension();EventLoop::delay(5, function () use ($suspension): void {    print '++ Executing callback created by EventLoop::delay()' . PHP_EOL;    $suspension->resume(null);});print '++ Suspending to event loop...' . PHP_EOL;$suspension->suspend();print '++ Script end' . PHP_EOL;

在Revolt事件循環(huán)上注冊(cè)的回調(diào)會(huì)自動(dòng)作為協(xié)程運(yùn)行,掛起它們是安全的。除了事件循環(huán)API,Amp/async()還可以用來啟動(dòng)獨(dú)立的調(diào)用棧。Hdq28資訊網(wǎng)——每日最新資訊28at.com

<?phpuse function Amp/delay;require __DIR__ . '/vendor/autoload.php';Amp/async(function () {    print '++ Executing callback passed to async()' . PHP_EOL;    delay(3);    print '++ Finished callback passed to async()' . PHP_EOL;});print '++ Suspending to event loop...' . PHP_EOL;delay(5);print '++ Script end' . PHP_EOL;


Hdq28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-91034-0.html讓我們認(rèn)識(shí)一下PHP非阻塞并發(fā)框架Amp

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: C# 類(Class):構(gòu)建面向?qū)ο蟪绦虻幕A(chǔ)

下一篇: 北京試點(diǎn)醫(yī)保外賣購 目前京東可下單 支付寶醫(yī)保支付

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 不容錯(cuò)過的MSBuild技巧,必備用法詳解和實(shí)踐指南

    一、MSBuild簡(jiǎn)介MSBuild是一種基于XML的構(gòu)建引擎,用于在.NET Framework和.NET Core應(yīng)用程序中自動(dòng)化構(gòu)建過程。它是Visual Studio的構(gòu)建引擎,可在命令行或其他構(gòu)建工具中使用
  • 如何正確使用:Has和:Nth-Last-Child

    我們可以用CSS檢查,以了解一組元素的數(shù)量是否小于或等于一個(gè)數(shù)字。例如,一個(gè)擁有三個(gè)或更多子項(xiàng)的grid。你可能會(huì)想,為什么需要這樣做呢?在某些情況下,一個(gè)組件或一個(gè)布局可能會(huì)
  • Python異步IO編程的進(jìn)程/線程通信實(shí)現(xiàn)

    這篇文章再講3種方式,同時(shí)講4中進(jìn)程間通信的方式一、 Python 中線程間通信的實(shí)現(xiàn)方式共享變量共享變量是多個(gè)線程可以共同訪問的變量。在Python中,可以使用threading模塊中的L
  • 電視息屏休眠仍有網(wǎng)絡(luò)上傳 愛奇藝被質(zhì)疑“薅消費(fèi)者羊毛”

    記者丨寧曉敏 見習(xí)生丨汗青出品丨鰲頭財(cái)經(jīng)(theSankei) 前不久,愛奇藝發(fā)布了一份亮眼的一季報(bào),不僅營(yíng)收和會(huì)員營(yíng)收創(chuàng)造歷史最佳表現(xiàn),其運(yùn)營(yíng)利潤(rùn)也連續(xù)6個(gè)月實(shí)現(xiàn)增長(zhǎng)。自去年年初
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運(yùn)營(yíng)研究社作者 | 張知白編輯 | 楊佩汶設(shè)計(jì) | 晏談夢(mèng)潔這個(gè)暑期,旅游賽道徹底火了:有的「地方」火了&mdash;&mdash;貴州村超旅游收入 1 個(gè)月超過 12 億;有的「博主」火了&m
  • 花7萬退貨退款無門:誰在縱容淘寶珠寶商家造假?

    來源:極點(diǎn)商業(yè)作者:楊銘在淘寶購買珠寶玉石后,因?yàn)楸WC金不夠賠付,店鋪關(guān)閉,退貨退款難、維權(quán)無門的比比皆是。&ldquo;提供相關(guān)產(chǎn)品鑒定證書,支持全國(guó)復(fù)檢,可以30天無理由退換貨。&
  • 華為Mate60系列模具曝光:采用碩大圓形后置相機(jī)模組+拼接配色方案

    據(jù)此前多方爆料,今年華為將開始恢復(fù)一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將迎來更新,有望在9-10月份帶來全新的華為Mate60
  • 三星Galaxy Z Fold5今日亮相:厚度縮減但仍略顯厚重

    據(jù)官方此前宣布,三星將于7月26日也就是今天在韓國(guó)首爾舉辦Unpacked活動(dòng),屆時(shí)將帶來帶來包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
  • Android 14發(fā)布:首批適配機(jī)型公布

    5月11日消息,谷歌在今天凌晨舉行了I/O大會(huì),本次發(fā)布會(huì)谷歌帶來了自家的AI語言模型PaLM 2、谷歌Pixel Fold折疊屏、谷歌Pixel 7a手機(jī),同時(shí)發(fā)布了Androi
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
麻豆国产va免费精品高清在线| 亚洲欧美日韩国产成人| 黄色成人在线| 黄色成人av网站| 最新亚洲视频| 亚洲综合大片69999| 久久精品国产久精国产思思| 另类成人小视频在线| 欧美日韩国产成人高清视频| 国产精品一区在线观看你懂的| 黄色成人在线观看| 日韩一级精品| 久久aⅴ国产欧美74aaa| 欧美国产日韩xxxxx| 国产精品日产欧美久久久久| 黄网站免费久久| 99这里只有久久精品视频| 欧美亚洲综合另类| 欧美freesex8一10精品| 国产精品久久精品日日| 激情综合电影网| 在线亚洲激情| 久久亚洲国产精品日日av夜夜| 欧美女激情福利| 国产一区二区精品在线观看| 亚洲伦理久久| 久久久精品五月天| 欧美日韩理论| 黄网站色欧美视频| 亚洲视频在线观看三级| 久久夜色精品国产亚洲aⅴ| 国产精品99免视看9| 在线看日韩欧美| 午夜国产欧美理论在线播放| 欧美不卡三区| 国产丝袜一区二区| 一本一本久久a久久精品综合妖精| 久久精品国产久精国产思思| 欧美日韩mv| 一区二区三区在线免费视频| 亚洲视频久久| 欧美sm极限捆绑bd| 国产亚洲精品一区二555| 99精品欧美一区| 麻豆成人在线| 国产日韩精品一区二区三区 | 国产精品久久久久久久久婷婷| 激情av一区| 午夜在线精品偷拍| 欧美性大战久久久久久久| 亚洲电影中文字幕| 久久精品国语| 国产欧美va欧美va香蕉在| av成人免费| 欧美华人在线视频| 亚洲高清视频在线| 久久久五月天| 国产视频欧美| 亚洲女与黑人做爰| 欧美日韩在线视频首页| 亚洲人成77777在线观看网| 久久久噜噜噜久久中文字免| 国产精品视区| 亚洲综合好骚| 国产精品成人观看视频免费 | 亚洲欧洲日韩女同| 噜噜噜在线观看免费视频日韩| 国产日韩一区二区| 午夜精品影院在线观看| 国产精品久久久久久久电影 | 欧美高清在线一区| 亚洲国产精品电影| 欧美mv日韩mv国产网站app| 精品51国产黑色丝袜高跟鞋| 久久国产精品99久久久久久老狼 | 亚洲最新中文字幕| 欧美另类综合| 99在线观看免费视频精品观看| 欧美成人首页| 亚洲三级视频| 欧美精品久久久久久久久久| 亚洲国产精品欧美一二99| 巨胸喷奶水www久久久免费动漫| 国产主播一区二区| 久久久午夜电影| 伊人久久婷婷色综合98网| 久久久久国产精品www| 国产综合色产在线精品| 久久精品国产久精国产一老狼| 国产亚洲激情| 久久久久九九视频| 亚洲高清不卡在线观看| 欧美jizz19hd性欧美| 亚洲日本免费电影| 欧美日本免费一区二区三区| 久久精品视频一| 国产欧美日韩亚洲一区二区三区| 亚洲欧美一区二区在线观看| 国产毛片一区| 久久久久久久尹人综合网亚洲| 禁断一区二区三区在线| 美日韩精品视频免费看| 亚洲精品一区二区三区蜜桃久| 欧美日韩国产影片| 亚洲永久网站| 国产亚洲欧美在线| 久久亚洲精品一区| 亚洲精品国产精品国自产观看| 欧美日本久久| 午夜精品视频在线| 尤妮丝一区二区裸体视频| 欧美激情亚洲| 亚洲一区亚洲| 极品尤物久久久av免费看| 欧美激情小视频| 亚洲一区二区在线视频| 国产亚洲欧美在线| 欧美www在线| 在线视频日韩精品| 国产欧美在线播放| 女人天堂亚洲aⅴ在线观看| 亚洲最新中文字幕| 国产精品嫩草99av在线| 久久久99免费视频| 亚洲日本视频| 国产精品视频午夜| 噜噜噜在线观看免费视频日韩 | 亚洲神马久久| 国产一区深夜福利| 欧美啪啪一区| 欧美一区二区视频在线观看2020 | 国产精自产拍久久久久久蜜| 久久九九精品99国产精品| 亚洲破处大片| 国产欧美日韩三区| 欧美激情久久久久| 午夜精品一区二区三区在线视| 亚洲国产欧美精品| 欧美日韩精品一区二区| 久久激情视频| 99热在这里有精品免费| 国产一区深夜福利| 欧美日韩亚洲网| 久久视频国产精品免费视频在线 | 久久久久久网站| 夜夜嗨av一区二区三区四季av| 国产午夜精品理论片a级探花 | 国产精品一级在线| 欧美成人亚洲| 欧美一区二区在线免费观看| 亚洲日本黄色| 国产综合色一区二区三区| 欧美三级视频| 欧美mv日韩mv国产网站| 久久超碰97人人做人人爱| 日韩亚洲欧美一区| 亚洲国产成人不卡| 国产一区二区三区四区hd| 欧美三级资源在线| 欧美/亚洲一区| 久久国产日韩欧美| 亚洲一区免费网站| 亚洲美女在线国产| 在线日韩视频| 国产亚洲欧美激情| 国产精品久久久久久久久久妞妞| 欧美黄免费看| 久久久一区二区| 性欧美大战久久久久久久久| 这里只有精品在线播放| 亚洲欧洲日韩在线| 在线日韩欧美视频| 国产在线不卡精品| 国产精品美女诱惑| 欧美日韩日韩| 欧美激情一区二区三区在线视频观看| 久久精品视频在线观看| 午夜精品成人在线| 一区二区三区视频在线| 亚洲伦伦在线| 亚洲激情成人在线| 亚洲大片精品永久免费| 狠狠色香婷婷久久亚洲精品| 国产日韩欧美高清| 国产精品欧美激情| 国产精品福利在线观看| 欧美日韩在线播放三区| 欧美日本不卡视频| 欧美第十八页| 欧美插天视频在线播放| 久久久久久久成人| 久久久久免费| 久久久久久久波多野高潮日日| 欧美在线日韩精品| 欧美一区=区| 欧美有码在线观看视频| 亚洲综合久久久久| 亚洲免费视频在线观看| 亚洲尤物视频网| 亚洲欧美国产毛片在线| 亚洲伊人第一页| 亚洲男女自偷自拍| 香蕉国产精品偷在线观看不卡| 午夜精品视频在线观看|