Swoole:面向生產(chǎn)環(huán)境的 PHP 異步網(wǎng)絡(luò)通信引擎
使 PHP 開(kāi)發(fā)人員可以編寫(xiě)高性能的異步并發(fā) TCP败潦、UDP嗡贺、Unix Socket讶隐、HTTP赎懦,WebSocket 服務(wù)雀鹃。
Swoole 可以廣泛應(yīng)用于互聯(lián)網(wǎng)、移動(dòng)通信铲敛、企業(yè)軟件褐澎、云計(jì)算会钝、網(wǎng)絡(luò)游戲伐蒋、物聯(lián)網(wǎng)(IOT)工三、車(chē)聯(lián)網(wǎng)、智能家居等領(lǐng)域先鱼。
使用 PHP + Swoole 作為網(wǎng)絡(luò)通信框架俭正,可以使企業(yè) IT 研發(fā)團(tuán)隊(duì)的效率大大提升,更加專注于開(kāi)發(fā)創(chuàng)新產(chǎn)品焙畔。
簡(jiǎn)介
Swoole不是一個(gè)像Zend Framework掸读、CakePHP、Yii宏多、symfony儿惫、ThinkPHP等一樣的框架,也不是一個(gè)像WordPress伸但、Drupal肾请、Discuz、UChome等開(kāi)源產(chǎn)品看齊的項(xiàng)目更胖。
Swoole的目標(biāo)是向Java框架铛铁、Ruby On Rails、Python DjangoPylons等一流框架發(fā)起挑戰(zhàn)却妨。
運(yùn)行環(huán)境:Linux Windows Mac FreeBSD Unix
PHP版本支持:PHP5.3+
支持的數(shù)據(jù)庫(kù):MS SQL Server饵逐、MySQL、IBM DB2彪标、Oracle倍权、Interbase 、SQLite捞烟、PostgreSQL账锹、ODBC
支持的運(yùn)行方式:Web、Cli命令行腳本坷襟、PHP-GTK GUI奸柬。 [2]
功能
包含以下幾個(gè)特色功能:
1、 類(lèi)似ORM的數(shù)據(jù)查詢婴程,提供SQL封裝器廓奕,讓MySQL的SQL與PHP的Array,會(huì)話档叔,Cache無(wú)縫結(jié)合桌粉。
2、App MVC分層結(jié)構(gòu)衙四,有效的程序結(jié)構(gòu)分層铃肯,提高程序的可維護(hù)性和擴(kuò)展性,實(shí)現(xiàn)低耦合传蹈,基于接口開(kāi)發(fā)押逼。
3步藕、集成大量,實(shí)用的功能挑格,比如方便的數(shù)據(jù)庫(kù)操作咙冗,模板操作,緩存操作漂彤,系統(tǒng)配置雾消,表單處理,分頁(yè)挫望,數(shù)據(jù)調(diào)用立润,字典操作,上傳處理媳板,內(nèi)容編輯范删,調(diào)試等。
4拷肌、模板-數(shù)據(jù)反射系統(tǒng)到旦,可以直接在模板中調(diào)用數(shù)據(jù),提供很多標(biāo)簽巨缘,可以無(wú)需修改程序添忘,只修改模板,即可實(shí)現(xiàn)網(wǎng)站各類(lèi)更新維護(hù)工作若锁。
另外的幾個(gè)功能
1搁骑、Swoole包含了大量類(lèi),提供眾多的功能擴(kuò)展又固,基本上Web開(kāi)發(fā)能夠用到的功能類(lèi)仲器,大部分都可以在Swoole框架中找到。
2仰冠、Swoole擁有插件系統(tǒng)乏冀,F(xiàn)ckeditor、Adodb洋只、pscws中文分詞辆沦、中文全文索引系統(tǒng)、最新的Key-Value數(shù)據(jù)庫(kù)思想识虚,TokyoTyrant肢扯,可以無(wú)限擴(kuò)展框架的功能。 [2]
特性
Swoole 使用純 C 語(yǔ)言編寫(xiě)担锤,提供了 PHP 語(yǔ)言的異步多線程服務(wù)器蔚晨,異步 TCP/UDP 網(wǎng)絡(luò)客戶端,異步 MySQL肛循,異步 Redis铭腕,數(shù)據(jù)庫(kù)連接池银择,AsyncTask,消息隊(duì)列谨履,毫秒定時(shí)器,異步文件讀寫(xiě)熬丧,異步DNS查詢笋粟。
Swoole內(nèi)置了Http/WebSocket服務(wù)器端/客戶端、Http2.0服務(wù)器端析蝴。
除了異步 IO 的支持之外害捕,Swoole 為 PHP 多進(jìn)程的模式設(shè)計(jì)了多個(gè)并發(fā)數(shù)據(jù)結(jié)構(gòu)和IPC通信機(jī)制,可以大大簡(jiǎn)化多進(jìn)程并發(fā)編程的工作闷畸。其中包括了并發(fā)原子計(jì)數(shù)器尝盼,并發(fā) HashTable,Channel佑菩,Lock盾沫,進(jìn)程間通信IPC等豐富的功能特性。
Swoole2.0 支持了類(lèi)似 Go 語(yǔ)言的協(xié)程殿漠,可以使用完全同步的代碼實(shí)現(xiàn)異步程序赴精。PHP 代碼無(wú)需額外增加任何關(guān)鍵詞,底層自動(dòng)進(jìn)行協(xié)程調(diào)度绞幌,實(shí)現(xiàn)異步蕾哟。
什么是swoole
swoole是PHP的異步、并行莲蜘、高性能網(wǎng)絡(luò)通信引擎谭确,使用純C語(yǔ)言編寫(xiě),提供了PHP語(yǔ)言的異步多線程服務(wù)器票渠,異步TCP/UDP網(wǎng)絡(luò)客戶端逐哈,異步MySQL,異步Redis问顷,數(shù)據(jù)庫(kù)連接池鞠眉,AsyncTask,消息隊(duì)列择诈,毫秒定時(shí)器械蹋,異步文件讀寫(xiě),異步DNS查
Swoole內(nèi)置了Http/WebSocket服務(wù)器端/客戶端羞芍、Http2.0服務(wù)器端哗戈。
Swoole可以廣泛應(yīng)用于互聯(lián)網(wǎng)、移動(dòng)通信荷科、企業(yè)軟件唯咬、云計(jì)算纱注、網(wǎng)絡(luò)游戲、物聯(lián)網(wǎng)(IOT)胆胰、車(chē)聯(lián)網(wǎng)狞贱、智能家居等領(lǐng)域。 使用PHP+Swoole作為網(wǎng)絡(luò)通信框架蜀涨,可以使企業(yè)IT研發(fā)團(tuán)隊(duì)的效率大大提升瞎嬉,更加專注于開(kāi)發(fā)創(chuàng)新產(chǎn)品。隨著我們
我們?yōu)槭裁从胹woole
用戶打開(kāi)了我們的網(wǎng)站厚柳。他要做的就是勾選需要發(fā)郵件的代理商列表氧枣,然后把結(jié)算郵件發(fā)出去。
假如我們需要發(fā)1封郵件别垮,我們寫(xiě)個(gè)函數(shù)執(zhí)行即可便监。考慮到網(wǎng)絡(luò)可能會(huì)稍微有點(diǎn)延遲碳想,但是是可以接受的烧董,用戶會(huì)乖乖等你的網(wǎng)頁(yè)發(fā)完郵件了再關(guān)閉網(wǎng)頁(yè)。
假如我們要發(fā)布10封郵件胧奔,用一個(gè)for循環(huán)解藻,循環(huán)10遍執(zhí)行發(fā)郵件操作。這時(shí)候葡盗,也許10倍的網(wǎng)絡(luò)延遲會(huì)讓用戶稍微有點(diǎn)不耐煩螟左,但勉強(qiáng)可以等吧。
假如要發(fā)100封郵件觅够,for循環(huán)100遍胶背,用戶直接揭竿而起,什么破網(wǎng)站喘先!
但實(shí)際上钳吟,我們很可能有超過(guò)1萬(wàn)的郵件。怎么處理這個(gè)延遲的問(wèn)題窘拯?答案就是用異步红且。把“發(fā)郵件”這個(gè)操作封裝,然后后臺(tái)異步地執(zhí)行1萬(wàn)遍涤姊。這樣的話暇番,用戶提交網(wǎng)頁(yè)后,他所等待的時(shí)間只是“把發(fā)郵件任務(wù)請(qǐng)求推送進(jìn)隊(duì)列里”的時(shí)間思喊。而我們的后臺(tái)服務(wù)
將在用戶看不見(jiàn)的地方跑壁酬。而swoole就為我們實(shí)現(xiàn)了異步隊(duì)列處理及并發(fā)等問(wèn)題