亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    利用 OPcache 擴展提升 PHP7 性能技巧

    利用 OPcache 擴展提升 PHP7 性能技巧

    推薦(免費):PHP7

    No matter where I am, I will reply you immediately when I see the email.My Email: echo "YUBzYW1lZ28uY29tCg==" | base64 -d
    前言
    十一點半了,沉淀時間到了。

    PHP在運行的時候,存在這樣的一個流程,先將PHP代碼預(yù)編譯,生成字節(jié)碼后再加載到內(nèi)存里,最后CPU在內(nèi)存上執(zhí)行編譯后的字節(jié)碼片段。我們會發(fā)現(xiàn),在執(zhí)行PHP程序的時候,每次都經(jīng)過這樣的流程,此非浪費Time,是的,很容易聯(lián)想到:為何不向C++語言看齊呢,將源碼編譯成可直接加載到內(nèi)存so哥呢?呃呃???炷贸瞿愕牟綐?,裝上這顆子彈OPcache。自從PHP5.5.0出來后,就內(nèi)置此zend擴展了。


    What is OPcache
    OPcache是PHP中的Zend擴展,可以大大提升PHP的性能。
    OPcache 通過將 PHP 腳本預(yù)編譯的字節(jié)碼存儲到共享內(nèi)存中來提升 PHP 的性能, 存儲預(yù)編譯字節(jié)碼的好處就是 省去了每次加載和解析 PHP 腳本的開銷。


    Judge whether it has been extended OPcache

    ?  ~ php -m | grep OPcache Zend OPcache Zend OPcache

    倘若沒有開啟的話,可以在php.ini配置中開啟
    /home/samego/service/php7.2/php.ini

    ?  ~ echo zend_extension="opcache.so" >> /home/samego/service/php7.2/php.ini

    About OPcache configure
    接下來,我們需要在 PHP 的配置文件中啟用 OPcache(默認是關(guān)閉的):

    opcache.enable=1

    下面我們繼續(xù)對 OPcache 進行一些優(yōu)化配置:

    opcache.memory_consumption=512

    這個配置表示你想要分配給 OPcache 的內(nèi)存空間(單位:MB),設(shè)置一個大于 64 的值即可。

    opcache.interned_strings_buffer=64

    這個配置表示你想要分配給實際字符串的空間(單位:MB),設(shè)置一個大于 16 的值即可。

    opcache.max_accelerated_files=32531

    這個配置表示可以緩存多少個腳本,將這個值盡可能設(shè)置為與項目包含的腳本數(shù)接近(或更大)。

    opcache.validate_timestamps=0

    改配置值用于重新驗證腳本,如果設(shè)置為 0(性能最佳),需要手動在每次 PHP 代碼更改后手動清除 OPcache。如果你不想要手動清除,可以將其設(shè)置為 1 并通過 opcache.revalidate_freq 配置重新驗證間隔,這可能會消耗一些性能,因為需要每隔 x 秒檢查更改。

    opcache.save_comments=1

    這個配置會在腳本中保留注釋,我推薦開啟該選項,因為一些庫依賴于這個配置,并且我也找不出什么關(guān)閉它的好處。

    opcache.fast_shutdown=0

    快速關(guān)閉會給一個更快速清理內(nèi)存的機制,不過,在我的基準測試中,更慢一些,可能這會應(yīng)用帶來一些性能提升,但是你需要自己去嘗試。

    所以,最終的配置優(yōu)化長這樣:

    opcache.enable=1 opcache.memory_consumption=512 opcache.interned_strings_buffer=64 opcache.max_accelerated_files=32531 opcache.validate_timestamps=0 opcache.save_comments=1 opcache.fast_shutdown=0

    你可以使用這些配置值進行實驗,具體配置值取決于你的應(yīng)用大小和服務(wù)器配置。
    學(xué)習(xí)于Laravel社區(qū)


    Laravel OPcache

    • install

      ?  ~ composer require appstract/laravel-opcache
    • configure

      ?  ~ php artisan vendor:publish --provider="AppstractOpcacheOpcacheServiceProvider" --tag="config"
    • command

    # Clear OPcache: ?  ~ php artisan opcache:clear  # Show OPcache config: ?  ~ php artisan opcache:config  # Show OPcache status: ?  ~ php artisan opcache:status  # Pre-compile your application code: ?  ~ php artisan opcache:optimize

    拭目以待的場景測試

    個人比較喜歡數(shù)據(jù)說話
    場景:(1)請求GET接口 (2)測試次數(shù)10 (3)并發(fā)數(shù)為100

    case non-extension

    1000個請求,花費32.32秒,每秒30.94個請求

    Transactions:               1000 hits Availability:             100.00 % Elapsed time:              32.32 secs Data transferred:           0.97 MB Response time:              0.32 secs Transaction rate:          30.94 trans/sec Throughput:             0.03 MB/sec Concurrency:                9.96 Successful transactions:        1000 Failed transactions:               0 Longest transaction:            0.44 Shortest transaction:           0.11

    case had extend

    1000個請求,花費2.94秒,每秒340.14個請求

    Transactions:               1000 hits Availability:             100.00 % Elapsed time:               2.94 secs Data transferred:           0.97 MB Response time:              0.03 secs Transaction rate:         340.14 trans/sec Throughput:             0.33 MB/sec Concurrency:                9.86 Successful transactions:        1000 Failed transactions:               0 Longest transaction:            0.29 Shortest transaction:           0.01

    看到這組數(shù)據(jù),我甚是高興,無比的喜悅。在性能方面,形成如此鮮明的對比,我二話不說~OPcache is right

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號