Post view

insoler社群網站正式升級到最新版macOS Catalina 10.15.4、PHP Version 7.4.5、ImageMagick 3.4.4

雖然在十幾天前的4月11日,我才剛剛升級到全部的最新版本:

insoler社群網站正式升級到最新版macOS Catalina 10.15.4、PHP Version 7.3.15、ImageMagick 3.4.4

不過,當時PHP的最新版本並不是PHP 7.3.15,而是PHP 7.4.4。最近16 Apr 2020又發表了新的PHP 7.4.5更新版,以及PHP 7.3.17更新版,你可以在PHP社群網站上,直接下載最新的PHP版本:

https://www.php.net/downloads.php

但是當我使用Homebrew的brew指令搜尋PHP的時候,仍然只看到php@7.3版本,這就讓我覺的有點奇怪!既然PHP 7.4版都已經更新到PHP 7.4.5,為什麼在Homebrew上面仍然找不到php@7.4?

我在Google搜尋Homebrew與php 7.4以後,才發現是我使用的搜尋關鍵字的問題!我想這應該是Homebrew一直忘記把php@7.4加入到php關鍵字,以至於只用「brew search php」搜尋的時候,只能找到php@7.2與php@7.3,找不到php@7.4!

只要改變搜尋方式,使用「brew search php@7」這樣的關鍵字,就可以找到php@7.2、php@7.3、php@7.4!

insoler@una ~ % brew search php
==> Formulae
brew-php-switcher   php-cs-fixer        phplint             phpstan
php                 php@7.2             phpmd               phpunit
php-code-sniffer    php@7.3             phpmyadmin
==> Casks
homebrew/cask/eclipse-php                homebrew/cask/netbeans-php
insoler@una ~ % brew search php@7
==> Formulae
php@7.2                    php@7.3                    php@7.4
insoler@una ~ % brew install php@7.4
Updating Homebrew...

在這裡雖然無法確認PHP 7.4的版本,但我猜想應該是最新的PHP 7.4.5。所以就決定在另外一台Mac mini擔任的「社群網站地下室」先安裝測試看看。確認是PHP 7.4.5以後,就刪除整個Homebrew全部重新安裝!因為如果只有從PHP 7.3.15更新到PHP 7.4.5,會導致PHP某些模組無法正確更新,如果為了解決問題,可能會浪費更多時間,還不如刪除整個Homebrew,重因安裝Apache、PHP、ImageMagick... 還更快、更簡單,更不會遇到奇怪的版本相容性的問題。

這是在今天之前insoler社群網站使用的PHP版本。你可以看到是PHP Version 7.3.15。現在最新的版本是PHP 7.3.17。

當時的imagick 3.4.4搭配的版本是ImageMagick 7.0.10.0。

insoler社群網站正式升級到PHP Version 7.4.5最新版

你可以看到在相同的網址,執行相同的phpinfo()程式,就會看到insoler社群網站目前使用的是PHP Version 7.4.5最新版!這個版本的發表時間是Build Date Apr 23 2020 02:24:02。

因為是刪除整個Homebrew全部的程式重新安裝,所以ImageMagick也升級到目前的最新版ImageMagick 7.0.10-7。

這是之前才剛剛安裝的ImageMagick 7.0.10-0版:

imagick module enabled
imagick module version  3.4.4 
imagick classes  Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel 
Imagick compiled with ImageMagick version  ImageMagick 7.0.10-0 Q16 x86_64 2020-03-08 https://imagemagick.org 
Imagick using ImageMagick library version  ImageMagick 7.0.10-0 Q16 x86_64 2020-03-08 https://imagemagick.org 
ImageMagick copyright  © 1999-2020 ImageMagick Studio LLC 
ImageMagick release date  2020-03-08 
ImageMagick number of supported formats:  238 

這是剛剛才安裝的最新版ImageMagick 7.0.10-7。

imagick module enabled
imagick module version  3.4.4 
imagick classes  Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel 
Imagick compiled with ImageMagick version  ImageMagick 7.0.10-7 Q16 x86_64 2020-04-20 https://imagemagick.org 
Imagick using ImageMagick library version  ImageMagick 7.0.10-7 Q16 x86_64 2020-04-20 https://imagemagick.org 
ImageMagick copyright  © 1999-2020 ImageMagick Studio LLC 
ImageMagick release date  2020-04-20 
ImageMagick number of supported formats:  238 

當然,PHP 7.4.5也有搭配PHP內建的Zend OPcache快取模組,可以加速PHP程式碼的執行速度。

insoler網站當然也有使用Zend OPcache快取模組,在所有PHP程式碼都被快取的情況下,幾乎是100%程式碼全部都有加速處理。

PHP 7.4.5比PHP 7.3.15更快0.1〜0.4秒?!

在前面的文章有做過PHP程式碼的Benchmark效能測試,這是上次的測試結果。你可以看到從PHP 7.1.33升級到PHP 7.3.11就快了許多,大約快了0.4〜0.5秒。


Mac mini (Late 2012) :

網站使用的 PHP 版本:7.1.33 版

非物件導向程式,普通 PHP 副程式的執行時間:4.7213530540466 秒

網站使用的 PHP 版本:7.1.33 版

PHP 物件導向程式執行時間:4.7621841430664 秒

PHP 物件導向程式執行時間:4.8421759605408 秒


Mac mini (Late 2012) :

網站使用的 PHP 版本:7.3.11 版

非物件導向程式,普通 PHP 副程式的執行時間:4.184641122818 秒

非物件導向程式,普通 PHP 副程式的執行時間:4.1889100074768 秒

網站使用的 PHP 版本:7.3.11 版

PHP 物件導向程式執行時間:4.2198650836945 秒 

PHP 物件導向程式執行時間:4.4577078819275 秒


Mac mini Server (Late 2012) :使用macOS Catalina 10.15.4

網站使用的 PHP 版本:7.3.15 版

非物件導向程式,普通 PHP 副程式的執行時間:4.1465530395508 秒

非物件導向程式,普通 PHP 副程式的執行時間:4.3262758255005 秒

非物件導向程式,普通 PHP 副程式的執行時間:4.5892188549042 秒

網站使用的 PHP 版本:7.3.15 版

PHP 物件導向程式執行時間:4.2702870368958 秒

PHP 物件導向程式執行時間:4.5515449047089 秒


那麼,升級到PHP 7.4.5以後呢?


Mac mini Server (Late 2012) :使用macOS Catalina 10.15.4

網站使用的 PHP 版本:7.4.5 版

非物件導向程式,普通 PHP 副程式的執行時間:4.233882188797 秒

非物件導向程式,普通 PHP 副程式的執行時間:4.6362471580505 秒

非物件導向程式,普通 PHP 副程式的執行時間:4.5089910030365 秒

網站使用的 PHP 版本:7.4.5 版

PHP 物件導向程式執行時間:4.5526309013367 秒

PHP 物件導向程式執行時間:4.3747930526733 秒

由於我一直把「非物件導向程式,普通 PHP 副程式的執行時間」、「PHP 物件導向程式執行時間」寫在兩個測試程式,因此要同時比較的話,會有點麻煩。因此我重新寫了一個全新的Benchmark測試,也順便加入MySQL的測試。

這是在「地下室」測試的結果。使用的是與insoler正式網站完全相同規格、配備的Mac mini (Late 2012)迷你電腦主機。

其中的BxDolDb是insoler使用的海豚7.4系統的資料庫物件名稱。我使用BxDolDb物件來連接資料庫,這樣才能比較能反映insoler連接資料庫的真實成績。

insoler Benchmark 效能測試程式
版本 1.0
時間 2020年04月26日 05:16:47
PHP 版本 7.4.5
Web Server 網站系統 macOS Catalina
PHP Benchmark 效能測試  
數學運算函示 3.212 秒
字串處理函示 3.346 秒
非物件導向程式,普通 PHP 副程式 4.259 秒
物件導向程式 4.119 秒
PHP 效能測試時間小計 14.937 秒
MySQL Benchmark 資料庫效能測試  
MySQL Server 資料庫伺服器版本 8.0.19
BxDolDb 物件連接 MySQL 伺服器時間 0.002 秒
insoler 相簿首頁的資料查詢時間 0.586 秒
SELECT BENCHMARK 指令執行時間 0.544 秒
MySQL 資料庫效能測試時間小計 1.131 秒
效能測試時間總計 16.068 秒

這是在insoler首頁執行的相同測試結果。因為是使用完全相同規格、配備的Mac mini Server (Late 2012),所以你甚至可以看到「物件導向程式 4.119 秒」都是4.1秒的相同測試成績!小數點1位以下的數字可以忽略,因此「非物件導向程式,普通 PHP 副程式」的測試結果也都是4.2秒!

跑出「物件導向程式設計」比「非物件導向,傳統副程式呼叫」還要更快0.1秒的執行結果!PHP的研發團隊實力真是令人敬佩!

insoler Benchmark 效能測試程式
版本 1.0
時間 2020年04月26日 05:18:12
PHP 版本 7.4.5
Web Server 網站系統 macOS Catalina
PHP Benchmark 效能測試  
數學運算函示 3.085 秒
字串處理函示 3.264 秒
非物件導向程式,普通 PHP 副程式 4.215 秒
物件導向程式 4.119 秒
PHP 效能測試時間小計 14.683 秒
MySQL Benchmark 資料庫效能測試  
MySQL Server 資料庫伺服器版本 5.6.41
BxDolDb 物件連接 MySQL 伺服器時間 0.005 秒
insoler 相簿首頁的資料查詢時間 0.002 秒
SELECT BENCHMARK 指令執行時間 0.267 秒
MySQL 資料庫效能測試時間小計 0.273 秒
效能測試時間總計 14.956 秒

而「insoler 相簿首頁的資料查詢時間」使用的也是insoler相簿首頁的真實SQL指令。在MySQL 8.0.19已經移除了Query Cache查詢快取功能,因此查詢速度會很明顯比MySQL 5.6.41慢很多!

MySQL 8.0: Retiring Support for the Query Cache

也許MySQL社群認為MySQL 5.6.41的Query Cache查詢快取功能在許多情況,反而會遇到更多問題,因此才需要移除查詢資料快取功能,但是對我們來說,使用Query Cache查詢快取功能從來都沒有遇到任何問題!

也因此我並不打算把資料庫升級到MySQL 8.0.19!這樣反而會導致資料查詢速度從0.002秒暴增到0.5秒!在MySQL沒有提出更好的解決辦法以前,我只能繼續使用有點老舊的MySQL 5.6.41,拒絕升級到目前的最新版MySQL 8.0.19!

蘇言霖 2020/04/26 0 1453
Comments
Order by: 
Per page:
 
  • There are no comments yet
Rate
0 votes
Post info
蘇言霖
「超級懶貓級」社群網站站長
2020/04/26 (1691 days ago)
Actions