日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

swoole不是php,Swoole

發(fā)布時(shí)間:2025/3/19 php 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 swoole不是php,Swoole 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

## Swoole

php代碼只是個(gè)表現(xiàn)形式,程序最終是運(yùn)行在內(nèi)存中的進(jìn)程,內(nèi)存中一種東西,代碼只是一種形式而已。

代碼只是一個(gè)形式,以一種方式來創(chuàng)建一個(gè)運(yùn)行在內(nèi)存中的程序,所以Swoole的php腳本代碼只是啟動(dòng)進(jìn)程的方式而已,這個(gè)php腳本只是這種啟動(dòng)方式的載體而已(所以理論上不使用php代碼,使用任何代碼都可以,使用php只是因?yàn)镾woole本身就是php的擴(kuò)展,用php代碼來啟動(dòng)更親切,更加的方便而已),運(yùn)行后你再刪掉腳本文件都沒關(guān)系,因?yàn)榇a只是形式,只是為了啟動(dòng)進(jìn)程而已。

這么來看,任何程序的代碼都是這樣的,比如PHP腳本,你寫了它,只是一種形式而已,運(yùn)行時(shí)它被加載到內(nèi)存了,此時(shí)你可以刪除它都沒問題的,內(nèi)存中的程序不會(huì)受影響,你寫的代碼只是描述了如何生成內(nèi)存中的程序而已,所以你要明白,你寫的代碼只是一種形式的體驗(yàn)而已,最終運(yùn)行的是加載到內(nèi)存中的程序。

>[danger] 站在這個(gè)角度考慮,那么編程語言是不存在的,萬物是不存在的,不過不要想太多,而成為[民間哲學(xué)家](https://segmentfault.com/q/1010000009586182)。

傳統(tǒng)web只是每次都需要調(diào)用腳本創(chuàng)建進(jìn)程,而Swoole一般只是常駐服務(wù),所以會(huì)更明顯的體會(huì)到這點(diǎn)。

* * * * *

### 代碼的本質(zhì)

對(duì)計(jì)算機(jī)來說,代碼本身并不重要,對(duì)人來說,代碼怎么寫才重要(所以規(guī)范很重要)。

對(duì)計(jì)算機(jī)來說,代碼只是工作指令。對(duì)人來說,代碼是解決問題的邏輯思維。

代碼中應(yīng)當(dāng)有你的思考,思想,代碼是有靈魂的,好的代碼優(yōu)雅簡(jiǎn)潔,是能從中發(fā)現(xiàn)真善美的。

計(jì)算機(jī)只是工具,代碼是我們與工具打交道的方式。

* * * * *

### 參考

**php的運(yùn)行模式和生命周期**

[Laravel的核心概念 - SegmentFault](https://segmentfault.com/p/1210000007162144)

[為什么Swoole可以加速php - daryl的技術(shù)天地 - SegmentFault](https://segmentfault.com/a/1190000009486485)

* * * * *

[關(guān)于PHP協(xié)程與阻塞的思考](http://mp.weixin.qq.com/s/WxcP_ghWyY3kWoPi_8dC8w)

* * * * *

[談編程 · php筆記 · 看云](https://www.kancloud.cn/xiak/php-node/500811)

[Golang在php的web開發(fā)中,可以替代哪些應(yīng)用場(chǎng)景? - 知乎](https://www.zhihu.com/question/265388870/answer/293319812)

> **【短生命周期+同步】** 的PHP-FPM 和 **【長(zhǎng)生命周期(邏輯內(nèi)存常駐)+同步/異步】** 的Swoole聯(lián)合開發(fā).

[Just for fun——Slim借力Swoole - Salamander - SegmentFault](https://segmentfault.com/a/1190000013070940)

[workerman / 小談PHP中的幾種運(yùn)行模式 - 掘金](https://juejin.im/post/5ac70b11f265da239e4e5132)

[ThinkPhp5與Swoole定時(shí)任務(wù)實(shí)踐 · 看云](https://www.kancloud.cn/dapeng235/thinkphp5_swoole_timer)

* * * * *

> **理論上其他的同步阻塞 PHP 框架,如 Laravel 、Yii **,都可以實(shí)現(xiàn)只修改底層兼容 Swoole 2.x 協(xié)程,實(shí)現(xiàn)項(xiàng)目代碼無縫切換協(xié)程模式。拭目以待。by:[韓天峰-Rango的微博_微博](https://weibo.com/hantianfeng?refer_flag=1005055014_&is_hot=1#1523957726058)

* * * * *

![](https://wx4.sinaimg.cn/mw690/3fecf63dgy1fpv6gqfr7jj20sw0uq41q.jpg)

> 又搞定一個(gè)新特性,在 Swoole 協(xié)程中**死循環(huán)向某個(gè)連接發(fā)送數(shù)據(jù)**,會(huì)導(dǎo)致緩存區(qū)塞滿。之前的處理邏輯,為了避免服務(wù)器內(nèi)存吃光,超過內(nèi)存緩存區(qū)后會(huì)立即返回 false 。現(xiàn)在用協(xié)程實(shí)現(xiàn)了自動(dòng)調(diào)度,緩存區(qū)滿的時(shí)候自動(dòng) yield,發(fā)送完成后自動(dòng) resume 協(xié)程繼續(xù)發(fā)送。

![](https://wx4.sinaimg.cn/mw690/3fecf63dgy1fpclf8gpmoj20fv0gc0u2.jpg)

> Swoole 的協(xié)程編程體驗(yàn)非常棒。不需要多線程,直接用 go 關(guān)鍵詞開協(xié)程并發(fā)執(zhí)行。

* * * * *

[matyhtf/framework: PHP advanced Web development framework. The built-in application server based on the development of swoole extension.](https://github.com/matyhtf/framework)

> #### SwooleFramework: PHP的高級(jí)開發(fā)框架

>

> 與其他Web框架不同,SwooleFramework是一個(gè)全功能的后端服務(wù)器框架。除了Web方面的應(yīng)用之外,更廣泛的后端程序中都可以使用。

>

> * 內(nèi)置PHP應(yīng)用服務(wù)器,可脫離nginx/php-fpm/apache獨(dú)立運(yùn)行

> * 配置化與資源自動(dòng)工廠,可實(shí)現(xiàn)從配置中創(chuàng)建資源對(duì)象,完全無需new對(duì)象

> * 全面采用命名空間+autoload,代碼中無需任何的include/require

> * 全局注冊(cè)樹,所有資源都掛載到全局樹上,徹底實(shí)現(xiàn)資源的單例管理和懶加載

> * 全棧框架,提供了數(shù)據(jù)庫操作,模板,Cache,日志,隊(duì)列,上傳管理,用戶管理等幾乎所有的功能

>

> PHP版本需求: PHP5.4/PHP5.5/PHP5.6/PHP7.0/PHP7.1,不支持PHP5.3

#### [Swoole框架](https://wiki.swoole.com/wiki/index/prid-2)

基于Swoole擴(kuò)展開發(fā)的PHP web server&應(yīng)用服務(wù)器, 內(nèi)置框架。提供統(tǒng)一注冊(cè)樹,數(shù)據(jù)庫操作,模板,Cache,日志,隊(duì)列,上傳管理,用戶管理等豐富的功能特性。

swoole框架相比apache/fpm,主要是節(jié)省PHP框架和全局對(duì)象每次請(qǐng)求創(chuàng)建銷毀帶來的性能損耗。如果你的PHP代碼是裸echo的方式,swoole框架并沒有性能優(yōu)勢(shì)。

swoole框架給程序員提供了最大的空間,與http請(qǐng)求無關(guān)的全局對(duì)象只需要構(gòu)造一次。程序中還可以對(duì)某些對(duì)象和數(shù)據(jù)進(jìn)行緩存控制。

* * * * *

[mixstart/mixphp: 輕量 PHP 框架,基于 Swoole 的常駐內(nèi)存型 PHP 高性能框架 (開發(fā)文檔完善)](https://github.com/mixstart/mixphp)

> #### 與傳統(tǒng) MVC 框架比較

>

> MixPHP 與傳統(tǒng) PHP 的 Web 框架非常不同,可以不需要 Web 服務(wù)器(Apache/PHP-FPM),框架自帶基于 SwooleServer 開發(fā)的 mix-httpd 高性能 HTTP 服務(wù)器,**傳統(tǒng)的 PHP 應(yīng)用程序中腳本結(jié)束后,所有的對(duì)象在請(qǐng)求后都將銷毀,而 mix-httpd 不同,框架組件對(duì)象常駐于內(nèi)存,減少對(duì)象反復(fù)創(chuàng)建銷毀的性能損失,具有傳統(tǒng)框架無法比擬的性能優(yōu)勢(shì)。**

>

> MixPHP 參考了 Yii2 框架的組件設(shè)計(jì)思想,又舍棄了 Yii2 與前端強(qiáng)耦合的缺點(diǎn),使得整個(gè)框架如同 CodeIgniter 一樣小巧別致,MixPHP 同時(shí)擁有 Yii2 的架構(gòu)思想、Swoole 的高性能與更后端開發(fā)能力。

[easy-swoole/easyswoole: use swoole easily just like echo "hello world";](https://github.com/easy-swoole/easyswoole)

> EasySwoole 是一款基于Swoole Server 開發(fā)的常駐內(nèi)存型的分布式PHP框架,專為API而生,擺脫傳統(tǒng)PHP運(yùn)行模式在進(jìn)程喚起和文件加載上帶來的性能損失。EasySwoole 高度封裝了 Swoole Server 而依舊維持 Swoole Server 原有特性,支持同時(shí)混合監(jiān)聽HTTP、自定義TCP、UDP協(xié)議,讓開發(fā)者以最低的學(xué)習(xí)成本和精力編寫出多進(jìn)程,可異步,高可用的應(yīng)用服務(wù)

[為什么 PHP 程序員應(yīng)該學(xué)習(xí)使用 Swoole](https://www.toutiao.com/a6568284224787317251/?tt_from=weixin&utm_campaign=client_share&timestamp=1529319824&app=news_article_lite&utm_source=weixin&iid=33124962994&utm_medium=toutiao_android&wxshare_count=1)

> 【常駐內(nèi)存】目前傳統(tǒng) PHP框架,在處理每個(gè)請(qǐng)求之前,都要做一遍加載框架文件、配置的操作。這可能已經(jīng)成為性能問題的一大原因,而使用 Swoole 則沒有這個(gè)問題,一次加載多次使用。

[top-think/think-swoole at 2.0](https://github.com/top-think/think-swoole/tree/2.0)(這樣的東西肯定用擴(kuò)展去做,而不是寫在框架里面)

* * * * *

[ThinkPHP 5.1 Swoole 快速上手指南 · ThinkPHP5.1 Swoole上手指南 · 看云](https://www.kancloud.cn/thinkphp/think-swoole/content)

[easySwoole|swoole框架|swoole拓展|swoole](https://www.easyswoole.com/)

我也是用swoole框架,感覺確實(shí)快..響應(yīng)都是在100ms內(nèi)..代碼多注意點(diǎn)就是,畢竟自己管理內(nèi)存,進(jìn)程..

用于線上項(xiàng)目的話,內(nèi)存泄露,mysql斷線,服務(wù)崩了也只能重啟,畢竟不能用die的,調(diào)試全部是var_dump,sleep函數(shù)也要慎用,全局變量自己要記得銷毀.其他的多注意點(diǎn)就是

[聽過PHP定時(shí)器嗎?](https://mp.weixin.qq.com/s/TV8Qe0kvTCasz6mDIIA92w)

[swoolefy](https://github.com/bingcool/swoolefy)(swoolefy是一個(gè)基于swoole實(shí)現(xiàn)的輕量級(jí)、高性能、協(xié)程級(jí)、開放性的API應(yīng)用服務(wù)框架)

[PHP 不會(huì)死 —— 我們?nèi)绾问褂?Golang 來阻止 PHP 走向衰亡](https://mp.weixin.qq.com/s/x1QSy6NxlLE_Yv9wX6et2Q)

[來,控制一下 Goroutine 的并發(fā)數(shù)量](https://mp.weixin.qq.com/s/LyBp8D4ri32Yv2vTwpb3xA)

[https://www.easyswoole.com/Manual/3.x/Cn/_book/noobCourse/Coroutine.html](https://www.easyswoole.com/Manual/3.x/Cn/_book/noobCourse/Coroutine.html)

[nginx、swoole高并發(fā)原理初探](https://mp.weixin.qq.com/s/_gR3hXWnzTqM87ThVYeCww)

* * * * *

[goproxy/README_ZH.md at master · snail007/goproxy](https://github.com/snail007/goproxy/blob/master/README_ZH.md)

> 程序內(nèi)部能設(shè)置信號(hào)處理方式,實(shí)現(xiàn)后臺(tái)運(yùn)行。

>

> 守護(hù)運(yùn)行不是后臺(tái)運(yùn)行的意義,而是有另一個(gè)監(jiān)控進(jìn)程,監(jiān)控著目標(biāo)進(jìn)程的運(yùn)行情況,以保證目標(biāo)進(jìn)程的運(yùn)行,相當(dāng)于是守護(hù)的意思。

#### 后臺(tái)運(yùn)行

默認(rèn)執(zhí)行proxy之后,如果要保持proxy運(yùn)行,不能關(guān)閉命令行.

如果想在后臺(tái)運(yùn)行proxy,命令行可以關(guān)閉,只需要在命令最后加上--daemon參數(shù)即可.

比如:

`./proxy http -t tcp -p "0.0.0.0:38080" --daemon`

#### 守護(hù)運(yùn)行

守護(hù)運(yùn)行參數(shù)--forever,比如:?`proxy http --forever`?,

proxy會(huì)fork子進(jìn)程,然后監(jiān)控子進(jìn)程,如果子進(jìn)程異常退出,5秒后重啟子進(jìn)程.

該參數(shù)配合后臺(tái)運(yùn)行參數(shù)--daemon和日志參數(shù)--log,可以保障proxy一直在后臺(tái)執(zhí)行不會(huì)因?yàn)橐馔馔顺?

而且可以通過日志文件看到proxy的輸出日志內(nèi)容.

比如:?`proxy http -p ":9090" --forever --log proxy.log --daemon`

* * * * *

last update:2018-2-2 15:13:24

總結(jié)

以上是生活随笔為你收集整理的swoole不是php,Swoole的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。