亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

各開源框架使用與設(shè)計(jì)總結(jié)(三)

objc94 / 871人閱讀

摘要:總結(jié)了框架與架構(gòu)的區(qū)別。站在框架之外,看框架,看框架的共同特征與功用。由于框架所帶來的問題,以性能可擴(kuò)展問題,相對(duì)嚴(yán)重,所以分析性能的改造方向,總結(jié)了六大點(diǎn)。包括框架介紹,的使用,以及。

六、各項(xiàng)實(shí)踐,性能評(píng)測
下面進(jìn)入性能評(píng)測,評(píng)測我們相對(duì)就比較快速一些。直接用ab命令,來測試上面的所提及的一些改進(jìn)。
以下評(píng)測,所有測試頁面,均為:http://hjvote.app.ucai.cn/index.php 命令行為:
ab -c 20 -n 1000 http://hjvote.app.ucai.cn/index.php

6.1 、冷啟動(dòng)
1、冷啟動(dòng),比如我新啟動(dòng)的php-fpm,關(guān)掉opcache,關(guān)掉xhprof

Concurrency Level:      20
Time taken for tests:   4.981 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      478000 bytes
HTML transferred:       109000 bytes
Requests per second:    200.78 [#/sec] (mean)
Time per request:       99.612 [ms] (mean)
Time per request:       4.981 [ms] (mean, across all concurrent requests)
Transfer rate:          93.72 [Kbytes/sec] received

6.2、第二次
2、第二次,條件同上。

Concurrency Level:      20
Time taken for tests:   4.537 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      478000 bytes
HTML transferred:       109000 bytes
Requests per second:    220.42 [#/sec] (mean)
Time per request:       90.736 [ms] (mean)
Time per request:       4.537 [ms] (mean, across all concurrent requests)
Transfer rate:          102.89 [Kbytes/sec] received

**6.3、打開opcache第一次**

Concurrency Level:      20
Time taken for tests:   1.591 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      478000 bytes
HTML transferred:       109000 bytes
Requests per second:    628.67 [#/sec] (mean)
Time per request:       31.813 [ms] (mean)
Time per request:       1.591 [ms] (mean, across all concurrent requests)
Transfer rate:          293.46 [Kbytes/sec] received

6.4、第二次,條件同上

Concurrency Level:      20
Time taken for tests:   1.254 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      478000 bytes
HTML transferred:       109000 bytes
Requests per second:    797.70 [#/sec] (mean)
Time per request:       25.072 [ms] (mean)
Time per request:       1.254 [ms] (mean, across all concurrent requests)
Transfer rate:          372.36 [Kbytes/sec] received

6.5、對(duì)比再打開xhprof

Concurrency Level:      20
Time taken for tests:   1.254 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      478000 bytes
HTML transferred:       109000 bytes
Requests per second:    797.44 [#/sec] (mean)
Time per request:       25.080 [ms] (mean)
Time per request:       1.254 [ms] (mean, across all concurrent requests)
Transfer rate:          372.24 [Kbytes/sec] received

6.6、打開XHprof,關(guān)掉Opcache
對(duì)于這個(gè)簡單的頁面,沒有明顯惡化,我們?nèi)サ鬙pcache,打開xhprof

Concurrency Level:      20
Time taken for tests:   12.103 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      595000 bytes
HTML transferred:       226000 bytes
Requests per second:    82.62 [#/sec] (mean)
Time per request:       242.065 [ms] (mean)
Time per request:       12.103 [ms] (mean, across all concurrent requests)
Transfer rate:          48.01 [Kbytes/sec] received

6.7、第二次、條件同上

Concurrency Level:      20
Time taken for tests:   9.298 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      595000 bytes
HTML transferred:       226000 bytes
Requests per second:    107.55 [#/sec] (mean)
Time per request:       185.952 [ms] (mean)
Time per request:       9.298 [ms] (mean, across all concurrent requests)
Transfer rate:          62.50 [Kbytes/sec] received

在沒有opcache的情況下,XHProf的加入,導(dǎo)致用戶急劇變慢。

6.8、關(guān)掉xhprof HHVM第一次

Concurrency Level:      20
Time taken for tests:   1.142 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      521000 bytes
HTML transferred:       109000 bytes
Requests per second:    875.84 [#/sec] (mean)
Time per request:       22.835 [ms] (mean)
Time per request:       1.142 [ms] (mean, across all concurrent requests)
Transfer rate:          445.62 [Kbytes/sec] received

6.9、 第二次,條件同上

Concurrency Level:      20
Time taken for tests:   0.852 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      521000 bytes
HTML transferred:       109000 bytes
Requests per second:    1173.42 [#/sec] (mean)
Time per request:       17.044 [ms] (mean)
Time per request:       0.852 [ms] (mean, across all concurrent requests)
Transfer rate:          597.03 [Kbytes/sec] received

什么感覺?這種數(shù)字的差距是不是可以用震撼來形容?通過評(píng)測對(duì)比,我們對(duì)于opcache、hhvm和一般php-fpm性能心里也就有數(shù)了。同時(shí)也發(fā)現(xiàn),在頁面上開啟XHProf,會(huì)導(dǎo)致網(wǎng)頁性能急劇下降,所以不要在生產(chǎn)環(huán)境對(duì)多人開啟XHProf?;蛘邥?huì)帶來非常不好的用戶體驗(yàn)。

七、自有框架的設(shè)計(jì)
好的,看完了性能評(píng)測,我們來過了一下如果設(shè)計(jì)一個(gè)自有的框架需要哪些元素,或者說需要哪些內(nèi)容。

1、首先對(duì)目錄結(jié)構(gòu)進(jìn)行一個(gè)劃分,確定目錄層次結(jié)構(gòu)
–app 命令行應(yīng)用
–data 存放數(shù)據(jù)上傳
–lib 庫函數(shù)
–template 模板
–conf 各種配置
–doc 文檔,SQL
–log 日志
–test 測試代碼
–ctemplate 編譯后的模板
–htdocs Web主目錄

大家能看到,htdocs 同其他目錄,比如 doc、app目錄為什么要并列?這是安全性的考慮,想一想,否則的話,你的表定義被人下走了。你的后臺(tái)程序,可能會(huì)被用戶執(zhí)行。

2、其次來看一下類的層次結(jié)構(gòu)。
下圖是應(yīng)用程序各個(gè)類的分層。

最基層的應(yīng)用程序類,其實(shí)就是一個(gè)骨架。包括了getParam(取得參數(shù),無論命令行,還是Web訪問,都需要有參數(shù)分析)。checkParam(參數(shù)檢測)、checkAuth(權(quán)限檢測,比如是否是需要登錄的一個(gè)頁面)、outputPage等這些方法,全是空方話,但是由一個(gè)run方法串起來。如下:

public function run()
    {

        $this->getPara();

        $this->checkPara();

        $this->checkAuth();

        $this->main();

        $this->outputPage();

        $this->exitApp();
    }

應(yīng)用程序基類DCore_BaseApp.php的子類又分為三個(gè),一個(gè)負(fù)責(zé)命令行程序的處理DCore_ConsoleApp.php,另外一個(gè)負(fù)責(zé)像移動(dòng)應(yīng)用、開放平臺(tái)Api之類的數(shù)據(jù)處理DCore_ApiApp.php ,而第三個(gè),則是DCore_WebApp.php, 我們所在瀏覽器上所訪問的應(yīng)用,由這個(gè)應(yīng)用程序類派生出來頁面類。而DCore_AdminApp.php,是管理后臺(tái)應(yīng)用程序類的基類。因?yàn)楹蠖艘话阌胁灰粯拥臋?quán)限認(rèn)證機(jī)制。這樣也是為了把前后臺(tái)的應(yīng)用程序類區(qū)分得更加清楚。

這樣可以看到,整體結(jié)構(gòu)非常清晰。

好,那最后我們?cè)賮砜匆幌?,需要編寫哪些類庫?br> 在我們的框架中,編寫了這些。
?1、常用工具函數(shù)庫
實(shí)現(xiàn)字符串的常用操作封裝,比如中文取字串,繁簡轉(zhuǎn)換、編碼轉(zhuǎn)換

?2、模板引擎
可以簡化為包含PHP,在我們自己開發(fā)的這個(gè)框架中,支持了模板編譯,其實(shí)模板編譯很簡單,就是將一些特定的語法,換成PHP代碼,然后還是包含PHP

?3、路由控制,靜態(tài)化
用戶可以將路徑改成搜索引擎更友好的路徑,程序也能解析正確。

?4、后端數(shù)據(jù)請(qǐng)求控制
用于對(duì)后端一些公用操作的封裝,比如數(shù)據(jù)庫,比如Memcached,這樣的封裝帶來的好處是,如果一旦發(fā)生升級(jí)或者替換的時(shí)候,修改的代碼相對(duì)最少。比如你不用到處去改mysql_query,只需要修改當(dāng)前這個(gè)庫文件即可以了。

八、總結(jié)
好的,今天的課程就到這里??偨Y(jié)一下,我們講了如下幾點(diǎn):
1、5月課程尤其是5月份框架課程的總結(jié)??偨Y(jié)了框架與架構(gòu)的區(qū)別。
2、站在PHP框架之外,看框架,看框架的共同特征與功用。
3、以PHP框架為例,講框架所不能解決或者帶來的問題。
4、由于框架所帶來的問題,以性能、可擴(kuò)展問題,相對(duì)嚴(yán)重,所以分析PHP性能 的改造方向,總結(jié)了六大點(diǎn)。
5、分別演示了這六大點(diǎn)的改進(jìn)實(shí)踐。包括Yaf、Phalcon框架介紹,zephir的使用,以及HHVM。
6、匯總六大點(diǎn)的改進(jìn),并做了相關(guān)的性能評(píng)測。能看到,使用不同的技術(shù)差別巨大,所以我們要在穩(wěn)定可靠的情況下,盡可能采用最好的技術(shù)。
7、最后講解了開發(fā)一個(gè)自有框架,一般都是一個(gè)什么樣的思路。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/20785.html

相關(guān)文章

  • 開源中國專訪:Chameleon原理首發(fā),其它跨多端統(tǒng)一框架都是假的?

    摘要:中國互聯(lián)網(wǎng)絡(luò)信息中心發(fā)布的中國互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告顯示,截至年月,我國網(wǎng)民規(guī)模達(dá)億人,微信月活億支付寶月活億百度月活億另一方面,中國手機(jī)占智能手機(jī)整體的比例超過,月活約億。在年末正式發(fā)布了面向未來的跨端的。 開源中國專訪:Chameleon原理首發(fā),其它跨多端統(tǒng)一框架都是假的? 原創(chuàng): 嘉賓-張楠 開源中國 以往我們說某一功能跨多端,往往是指在諸如 PC、移動(dòng)等不同類型的設(shè)備之...

    GraphQuery 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<