V5版本 redis 和 http 已經(jīng)走協(xié)程了
請問mysql協(xié)程版會開發(fā)嗎??
假如mysql協(xié)程版開發(fā)出來了,
是不是workerman處理http請求的時候就可以直接開協(xié)程來處理請求啦??
workerman官方預(yù)計不會出協(xié)程版MySQL客戶端。原因如下:
PHP實現(xiàn)MySQL客戶端性能差
PHP層面實現(xiàn)MySQL客戶端需要使用PHP解析MySQL協(xié)議,PHP解析協(xié)議過程中相比PDO會消耗更多的CPU,導(dǎo)致整體性能不如直接使用阻塞PDO
PHP MySQL連接池缺陷
為了發(fā)揮協(xié)程優(yōu)勢需要使用MySQL連接池。而PHP是多進程單線程的,多進程間無法復(fù)用MYSQL連接池,需要每個進程開啟MYSQL連接池。例如64個進程,每個進程開啟一個10個連接的MySQL連接池,一臺服務(wù)器的總連接數(shù)可能達到640個,很容易把MySQL連接數(shù)占滿。這種連接池機制會導(dǎo)致系統(tǒng)擴展性很差。
MySQL連接數(shù)越多,性能越差
連接池機制會導(dǎo)致有更多的空閑連接,而MySQL連接數(shù)越多,性能越差,即使其中大部分是空閑連接。這就導(dǎo)致很多使用了MySQL連接池的應(yīng)用性能不如直接用PDO阻塞調(diào)用的原因。
引入?yún)f(xié)程會讓應(yīng)用變得復(fù)雜
引入?yún)f(xié)程會導(dǎo)致應(yīng)用開發(fā)變得復(fù)雜,需要時刻考慮上下文問題,一些組件需要改造才能使用,例如數(shù)據(jù)庫組件。webman一直體長簡單、穩(wěn)定、高性能。引入PHP實現(xiàn)的MySQL協(xié)程后性能肯定不會提高,簡單和穩(wěn)定性也受到挑戰(zhàn)。
第三方協(xié)程客戶端
預(yù)計會有第三方開發(fā)出基于fiber的MySQL協(xié)程客戶端,到時候應(yīng)該可以直接在webman中使用。
對于MySQL協(xié)程情有獨鐘的可以在webman中開啟swoole驅(qū)動,開啟后可以使用swoole的協(xié)程,注意使用swoole協(xié)程后就無法使用laravel以及thinkphp的orm,因為他們是不支持協(xié)程的。