国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

Swoole 5將移除自動添加Event::wait()特性詳解

2024-05-05 00:10:16
字體:
供稿:網(wǎng)友

前言

在之前的版本中,編寫Cli命令行腳本中使用異步或協(xié)程功能時,Swoole會自動在腳本末尾檢測是否有Event::wait()調(diào)用,如果沒有,底層會自動調(diào)用register_shutdown_function在腳本結(jié)束時調(diào)用Event::wait(),進(jìn)入事件循環(huán)。

這個特性為底層帶來了非常多的麻煩,我們不得不做了大量編碼工作,以解決帶來的問題。即便如此,仍然存在大量潛在的風(fēng)險,如某些PHP版本下內(nèi)存泄露,某些特殊用法導(dǎo)致core dump等。在最新的Swoole 5版本中,我們準(zhǔn)備拋棄這個歷史包袱。不再自動添加 Event::wait() 到PHP的shutdown function列表。

Server、Process、Process/Pool相關(guān)程序請忽略此更新

錯誤實例

go(function () { Co::sleep(1); echo "done/n";});

此代碼中沒有在腳本末尾添加Swoole/Event::wait(),底層會自動注冊到shutdown function列表中。相當(dāng)于:

register_shutdown_function(function () { Swoole/Event::wait();});go(function () { Co::sleep(1); echo "done/n";});

在shutdown階段處理程序邏輯會帶來很多額外的維護(hù)性難題。

正確實例

在Swoole 4.4或Swoole 5版本中,建議:

  • 使用Coroutine/Scheduler作為程序的入口
  • 或者在程序末尾手工添加Event::wait()
$scheduler = new Coroutine/Scheduler;$scheduler->add(function () { Co::sleep(1); echo "Done./n";});$scheduler->start();

推薦使用

或者:

go(function () { Co::sleep(1); echo "done/n";});Swoole/Event::wait();

不推薦使用

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 柏乡县| 朝阳市| 黄冈市| 潜山县| 灵璧县| 济源市| 丹江口市| 石楼县| 鹤峰县| 新河县| 利川市| 山东省| 四子王旗| 濮阳市| 安溪县| 河曲县| 武平县| 莫力| 长葛市| 江达县| 阿克| 临汾市| 濮阳市| 封丘县| 大姚县| 根河市| 济阳县| 黄冈市| 资中县| 亚东县| 宾阳县| 万州区| 龙里县| 清涧县| 临桂县| 花莲县| 龙陵县| 尼玛县| 巫溪县| 黑水县| 来安县|