国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP協(xié)程:并發(fā) shell_exec

xzavier / 726人閱讀

摘要:在程序中經(jīng)常需要用執(zhí)行一些命令,而普通的是阻塞的,如果命令執(zhí)行時(shí)間過(guò)長(zhǎng),那可能會(huì)導(dǎo)致進(jìn)程完全卡住。在協(xié)程環(huán)境下可以用并發(fā)地執(zhí)行很多命令。提供的協(xié)程,是并發(fā)編程的利器。在工作中很多地方都可以使用協(xié)程,實(shí)現(xiàn)并發(fā)程序,大大提升程序性能。

在PHP程序中經(jīng)常需要用shell_exec執(zhí)行一些命令,而普通的shell_exec是阻塞的,如果命令執(zhí)行時(shí)間過(guò)長(zhǎng),那可能會(huì)導(dǎo)致進(jìn)程完全卡住。
Swoole4協(xié)程環(huán)境下可以用Co::exec并發(fā)地執(zhí)行很多命令。

本文基于Swoole-4.2.9PHP-7.2.9版本
協(xié)程示例

返回值

Co::exec執(zhí)行完成后會(huì)恢復(fù)掛起的協(xié)程,并返回命令的輸出和退出的狀態(tài)碼。

var_dump(co::exec("sleep 5"));
協(xié)程結(jié)果
htf@htf-ThinkPad-T470p:~/workspace/debug$ time php t.php

real    0m5.089s
user    0m0.067s
sys    0m0.038s
htf@htf-ThinkPad-T470p:~/workspace/debug$

只用了 5秒,程序就跑完了。

下面換成 PHP 的 shell_exec 來(lái)試試。

阻塞代碼

使用nohup&轉(zhuǎn)為后臺(tái)執(zhí)行,無(wú)法得到命令執(zhí)行的結(jié)果和輸出,本文不對(duì)此進(jìn)行深度探討
阻塞結(jié)果
htf@htf-ThinkPad-T470p:~/workspace/debug$ time php s.php 

real    0m50.119s
user    0m0.066s
sys    0m0.058s
htf@htf-ThinkPad-T470p:~/workspace/debug$ 

可以看到阻塞版本花費(fèi)了50秒才完成。Swoole4提供的協(xié)程,是并發(fā)編程的利器。在工作中很多地方都可以使用協(xié)程,實(shí)現(xiàn)并發(fā)程序,大大提升程序性能。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/29710.html

相關(guān)文章

  • PHP 協(xié)程:Go + Chan + Defer

    摘要:為語(yǔ)言提供了強(qiáng)大的協(xié)程編程模式。提供的協(xié)程語(yǔ)法借鑒自,在此向開(kāi)發(fā)組致敬協(xié)程可以與很好地互補(bǔ)。并發(fā)執(zhí)行使用創(chuàng)建協(xié)程,可以讓和兩個(gè)函數(shù)變成并發(fā)執(zhí)行。協(xié)程需要拿到請(qǐng)求的結(jié)果。 Swoole4為PHP語(yǔ)言提供了強(qiáng)大的CSP協(xié)程編程模式。底層提供了3個(gè)關(guān)鍵詞,可以方便地實(shí)現(xiàn)各類功能。 Swoole4提供的PHP協(xié)程語(yǔ)法借鑒自Golang,在此向GO開(kāi)發(fā)組致敬 PHP+Swoole協(xié)程可以與...

    nidaye 評(píng)論0 收藏0
  • PHP下的異步嘗試二:初識(shí)協(xié)程

    摘要:如果僅依靠程序自動(dòng)交出控制的話,那么一些惡意程序?qū)?huì)很容易占用全部時(shí)間而不與其他任務(wù)共享。多個(gè)操作可以在重疊的時(shí)間段內(nèi)進(jìn)行。 PHP下的異步嘗試系列 如果你還不太了解PHP下的生成器,你可以根據(jù)下面目錄翻閱 PHP下的異步嘗試一:初識(shí)生成器 PHP下的異步嘗試二:初識(shí)協(xié)程 PHP下的異步嘗試三:協(xié)程的PHP版thunkify自動(dòng)執(zhí)行器 PHP下的異步嘗試四:PHP版的Promise ...

    MudOnTire 評(píng)論0 收藏0
  • 聊聊 2018 年后端技術(shù)趨勢(shì)

    摘要:現(xiàn)在在后端業(yè)務(wù)開(kāi)發(fā)編程方面,技術(shù)力量強(qiáng)的團(tuán)隊(duì)已經(jīng)開(kāi)始將技術(shù)棧從同步模式切換為異步了。使用這些技術(shù)方案是無(wú)法兼容已有程序的。影響了異步回調(diào)技術(shù)棧的普及。將會(huì)成為未來(lái)后端開(kāi)發(fā)領(lǐng)域的主流技術(shù)方案。 今天太忙,少寫(xiě)一點(diǎn),后面再補(bǔ)充。 異步模式 Go 語(yǔ)言越來(lái)越熱門(mén),很多大型互聯(lián)網(wǎng)公司后端正在轉(zhuǎn)向 GO 。Java 圈知名的服務(wù)化框架 Dubbo 也宣布轉(zhuǎn)型異步模式。這是一個(gè)大趨勢(shì),異步模式已經(jīng)...

    Miyang 評(píng)論0 收藏0
  • PHP物聯(lián)網(wǎng)開(kāi)發(fā)利器之Actor并發(fā)模型

    摘要:然而盡管如此,很多人可能都沒(méi)有思考過(guò),如何優(yōu)雅的寫(xiě)出自己的物聯(lián)網(wǎng)服務(wù)器。 PHP不適合做物聯(lián)網(wǎng)服務(wù)端嗎? 在傳統(tǒng)的思維中,經(jīng)常會(huì)有人告訴你,php不適合用來(lái)做物聯(lián)網(wǎng)服務(wù)端,讓你換java,node,go等其他語(yǔ)言,是的,沒(méi)錯(cuò)傳統(tǒng)意義上的php,確實(shí)很難做物聯(lián)網(wǎng)服務(wù)器,因?yàn)樗鼘?shí)在太蹩腳了,當(dāng)然,這也不是意味著徹底就不能做。舉個(gè)例子,當(dāng)你想實(shí)現(xiàn)一個(gè)TCP服務(wù)器的時(shí)候,你可能需要寫(xiě)出原理大約...

    ixlei 評(píng)論0 收藏0
  • 仿照async/await風(fēng)格對(duì)Swoole4協(xié)程的簡(jiǎn)單包裝

    摘要:官方文檔中對(duì)協(xié)程的示例大多按照一次請(qǐng)求一個(gè)協(xié)程或腳本并發(fā)大量協(xié)程的方式來(lái)舉例說(shuō)明這種使用方式下提升的是整體的性能而非單次請(qǐng)求的響應(yīng)時(shí)間要提升單次請(qǐng)求的響應(yīng)效率或提升非網(wǎng)絡(luò)服務(wù)下腳本代碼的運(yùn)行效率需要在業(yè)務(wù)代碼中主動(dòng)使用協(xié)程來(lái)處理那些可并發(fā)的 Swoole官方文檔中對(duì)協(xié)程的示例大多按照一次請(qǐng)求一個(gè)協(xié)程(或腳本并發(fā)大量協(xié)程)的方式來(lái)舉例說(shuō)明,這種使用方式下提升的是整體的性能,而非單次請(qǐng)求的...

    _ivan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<