c语言mysql自动重连接_c++操作mysql数据库
就拿查詢MySQL獲取結(jié)果集并在頁(yè)面上顯示數(shù)據(jù)為例來(lái)分析. HTTP請(qǐng)求由C級(jí)別的程序比如Apache/Nginx處理(Java的HTTP服務(wù)用的是Java開(kāi)發(fā)的Tomcat等), PHP則調(diào)用內(nèi)置在PHP引擎的C開(kāi)發(fā)的數(shù)據(jù)庫(kù)驅(qū)動(dòng)mysqlnd(Java用的是Java開(kāi)發(fā)的JDBC驅(qū)動(dòng))來(lái)操作MySQL, 查詢的邏輯這個(gè)重點(diǎn)都落在了C/C++開(kāi)發(fā)的MySQL身上, 然后就是把返回結(jié)果集放到PHP數(shù)組, 經(jīng)過(guò)字符串處理后在頁(yè)面輸出, 這些邏輯并不復(fù)雜, PHP負(fù)荷并不大. 值得注意的是, PHP內(nèi)置的大量庫(kù)函數(shù)全部使用C實(shí)現(xiàn), 而Java的核心運(yùn)行時(shí)類庫(kù)rt.jar則是使用Java實(shí)現(xiàn).在一些CLI下的壓力測(cè)試中,因?yàn)榇嬖诖罅康难h(huán),很容易就觸發(fā)Java的JIT熱點(diǎn)編譯,這時(shí)Java的計(jì)算性能上升到C的級(jí)別,這樣的測(cè)試結(jié)果只能說(shuō)Java在計(jì)算上的性能碾壓動(dòng)態(tài)解釋型弱類型的PHP,而不是在Web上.對(duì)比具有JIT的機(jī)制的HHVM和PHP7的性能也能說(shuō)明這個(gè)問(wèn)題,在bench.php這個(gè)計(jì)算腳本的壓力測(cè)試中,HHVM還是要比PHP7快1到2倍,但在WordPress等真實(shí)Web應(yīng)用的測(cè)試中,HHVM和PHP7兩者的性能相近.PHP的運(yùn)行模式要比Java健壯穩(wěn)定得多,比如PHP-FPM是經(jīng)典的多進(jìn)程prefork模式,主進(jìn)程會(huì)維持指定數(shù)量的工作進(jìn)程數(shù),可以設(shè)置工作進(jìn)程在處理多少個(gè)請(qǐng)求后自動(dòng)重啟.反觀Java多線程的Tomcat,除了內(nèi)存膨脹,代碼稍有不慎,就有可能讓Tomcat崩潰退出,拋出一大堆的錯(cuò)誤信息.PHP開(kāi)啟ZendOpcache后,可以把腳本生成的opcode緩存到內(nèi)存形成opcache供下次請(qǐng)求直接在ZendVM上執(zhí)行,能帶來(lái)一定的性能提升.PHP進(jìn)程(PHP-FPM,Apache)可以和MySQL/Memcached/Redis建立持久連接,一個(gè)PHP進(jìn)程保持一個(gè)MySQL持久連接,省去每次請(qǐng)求都建立連接的開(kāi)銷.但需要注意PHP進(jìn)程數(shù)不要超過(guò)MySQL最大連接數(shù)這一點(diǎn),超時(shí)或重啟MySQL后PHP-FPM在代碼mysqli_connect時(shí)會(huì)自動(dòng)重連,但會(huì)返回"MySQL server has gone away"的Warning信息,可以用@抑制錯(cuò)誤輸出.PHP的熱部署特性大大方便了開(kāi)發(fā)和運(yùn)維,這點(diǎn)是Java等其他語(yǔ)言(包括RoR/Python/Node.JS)所不能媲美的.
總結(jié)
以上是生活随笔為你收集整理的c语言mysql自动重连接_c++操作mysql数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: oracle rdbms 占内存_027
- 下一篇: 【Python】反转列表 list 的几