国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

各開源框架使用與設計總結(三)

objc94 / 780人閱讀

摘要:總結了框架與架構的區別。站在框架之外,看框架,看框架的共同特征與功用。由于框架所帶來的問題,以性能可擴展問題,相對嚴重,所以分析性能的改造方向,總結了六大點。包括框架介紹,的使用,以及。

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

6.1 、冷啟動
1、冷啟動,比如我新啟動的php-fpm,關掉opcache,關掉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、對比再打開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,關掉Opcache
對于這個簡單的頁面,沒有明顯惡化,我們去掉Opcache,打開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的加入,導致用戶急劇變慢。

6.8、關掉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

什么感覺?這種數字的差距是不是可以用震撼來形容?通過評測對比,我們對于opcache、hhvm和一般php-fpm性能心里也就有數了。同時也發現,在頁面上開啟XHProf,會導致網頁性能急劇下降,所以不要在生產環境對多人開啟XHProf。或者會帶來非常不好的用戶體驗。

七、自有框架的設計
好的,看完了性能評測,我們來過了一下如果設計一個自有的框架需要哪些元素,或者說需要哪些內容。

1、首先對目錄結構進行一個劃分,確定目錄層次結構
–app 命令行應用
–data 存放數據上傳
–lib 庫函數
–template 模板
–conf 各種配置
–doc 文檔,SQL
–log 日志
–test 測試代碼
–ctemplate 編譯后的模板
–htdocs Web主目錄

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

2、其次來看一下類的層次結構。
下圖是應用程序各個類的分層。

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

public function run()
    {

        $this->getPara();

        $this->checkPara();

        $this->checkAuth();

        $this->main();

        $this->outputPage();

        $this->exitApp();
    }

應用程序基類DCore_BaseApp.php的子類又分為三個,一個負責命令行程序的處理DCore_ConsoleApp.php,另外一個負責像移動應用、開放平臺Api之類的數據處理DCore_ApiApp.php ,而第三個,則是DCore_WebApp.php, 我們所在瀏覽器上所訪問的應用,由這個應用程序類派生出來頁面類。而DCore_AdminApp.php,是管理后臺應用程序類的基類。因為后端一般有不一樣的權限認證機制。這樣也是為了把前后臺的應用程序類區分得更加清楚。

這樣可以看到,整體結構非常清晰。

好,那最后我們再來看一下,需要編寫哪些類庫。
在我們的框架中,編寫了這些。
?1、常用工具函數庫
實現字符串的常用操作封裝,比如中文取字串,繁簡轉換、編碼轉換

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

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

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/20785.html

相關文章

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

    摘要:中國互聯網絡信息中心發布的中國互聯網絡發展狀況統計報告顯示,截至年月,我國網民規模達億人,微信月活億支付寶月活億百度月活億另一方面,中國手機占智能手機整體的比例超過,月活約億。在年末正式發布了面向未來的跨端的。 開源中國專訪:Chameleon原理首發,其它跨多端統一框架都是假的? 原創: 嘉賓-張楠 開源中國 以往我們說某一功能跨多端,往往是指在諸如 PC、移動等不同類型的設備之...

    GraphQuery 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<