搜尋
首頁後端開發php教程php7和php5有什麼不同之處? php5與php7的對比

這篇文章要跟大家介紹的內容是關於php7和php5有什麼不同? php5與php7的對比,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

PHP7來一發

PHP7正式發佈到現在已經一年半了,剛出道就號稱比舊版本快了幾倍,各種開源框架或系統運作在PHP7上速度效率提高了幾倍,反正不管是媒體還是開發者都在煽風點火,不,應該是讚不絕口。
我就靜靜看你們裝逼,不說話。

一般手機系統升級我是跑最後的,因為不願意踩坑,畢竟iOS和Android這種系統都會出現bug,何況世界上被人駭的最多的語言。

今日時機已到,看看PHP7有沒有傳說的那麼王炸。

安裝兩個PHP版本

http://www.php.cn/ 已經有最新PHP7的最新版本,大家可自行下載。
為了測試PHP5和PHP7(PHP6已被放棄,心疼1s)的效能,我在不同的目錄安裝了兩個php版本。

安裝過程就略過了,無論原始碼安裝或套件管理工具安裝,記得自己的路徑即可。

PHP7:

# /usr/local/php7/bin/php -v
PHP 7.1.5 (cli) (built: May 13 2017 23:36:41) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

PHP5:

# /usr/bin/php -v
PHP 5.6.30 (cli) (built: Jan 19 2017 22:31:39) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

環境說明:為了確保最佳的測試效果,本次測試在直接在生產環境進行,更逼近真實情況。
作業系統:CentOS 7.2 64位元
基本配置:1核心1GB 1Mbps
主機品牌:騰訊雲端

PHP7和PHP5的對決

#1、純php腳本測試

  • vim test.php

    $arr = array();
    for ($i = 0; $i < 500000; $i++) {
            $arr[$i] = $i;
    }
    
    $tmp = array();
    foreach ($arr as $i) {
        if ($i % 2 == 0) {
            $is_exists = array_key_exists($i, $arr);
            if ($is_exists) {
               array_push($tmp, $i);
            }
        }
    }
  • PHP5版本測試:
time /usr/bin/php test.php 
real    0m0.301s
user    0m0.239s
sys     0m0.050s
--------------------------
time /usr/bin/php test.php
real    0m0.310s
user    0m0.241s
sys     0m0.054s
--------------------------
time /usr/bin/php test.php
real    0m0.289s
user    0m0.238s
sys     0m0.050s

PHP7版本測試:

time /usr/local/php7/bin/php test.php

real    0m0.087s
user    0m0.063s
sys     0m0.024s
-------------------------------------
time /usr/local/php7/bin/php test.php

real    0m0.106s
user    0m0.073s
sys     0m0.033s
--------------------------------------
time /usr/local/php7/bin/php test.php

real    0m0.083s
user    0m0.061s
sys     0m0.022s

透過資料可以看出來,單純的php腳本測試,可以看出php7效能提升了3到4倍。

2、php資料庫操作測試

#首先我們建立一個使用者表:

Table: test_user
Create Table: CREATE TABLE `test_user` (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(100) NOT NULL DEFAULT &#39;&#39;,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

給test_user表插入一條資料:

insert into test_user (uid,name) values (1,"dada");
MariaDB [test]> select * from test_user;
+-----+------+
| uid | name |
+-----+------+
|   1 | dada |
+-----+------+

建立資料庫測試腳本test_db.php,確保你的兩個PHP版本都安裝了PDO擴充。

/usr/bin/php -m|grep pdo
pdo_mysql
pdo_sqlite

/usr/local/php7/bin/php -m|grep pdo
pdo_mysql
pdo_sqlite

我的兩個PHP版本已經安裝了PDO(不要再使用php_mysql擴展,已經過時了,PHP7已經完全拋棄,mysqli也不建議使用)。

接下來我們透過PDO編寫腳本,測試select執行50萬次的效能比較:
    $host = "yourHost";
    $user = "yourUser";
    $pass = "yourPass";
    $db   = "test";
    $port = 3306;
    
    try
    {
      $dbh = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
      echo "Connected<p>";
    }
    catch (Exception $e)
    {
      echo "Unable to connect: " . $e->getMessage() ."<p>";
    }
    
    $sql = "select  SQL_NO_CACHE * from test_user;";
    $tmp = array();
    for ($i=1; $i<=500000; $i++) {
      $ret = $dbh->query($sql);  
      foreach ($ret as $row) {
        $tmp[&#39;id&#39;]   = $row[&#39;id&#39;];
        $tmp[&#39;name&#39;] = $row[&#39;name&#39;];
      }
    }
  • PHP5測試test_db.php:

    time /usr/bin/php test_db.php
    real    0m48.396s
    user    0m11.149s  
    sys     0m3.998s
    
    real    0m51.447s
    user    0m11.800s
    sys     0m4.395s
    
    real    0m51.517s
    user    0m11.733s
    sys     0m4.439s

    PHP7測試test_db.php:
  • real    0m47.900s
    user    0m9.875s
    sys     0m4.130s
    
    real    0m46.977s
    user    0m9.760s
    sys     0m3.983s
    
    real    0m50.010s
    user    0m10.268s
    sys     0m4.307s
這次腳本執行了50w次查詢,user執行時間PHP7執行的腳本幾乎都比PHP5少一秒!是少一秒不是一毫秒。

  • 3、PHP框架測試


  • #thinkphp

國內肯定是首選thinkphp框架,選擇最新的thinkphp5。我這裡直接在官網下載的thinkphp5.0.9版本。

  • (一)框架入口測試

    PHP5下的測試:

    time /usr/bin/php ./public/index.php
    real    0m0.036s
    user    0m0.026s
    sys     0m0.010s
    
    real    0m0.038s
    user    0m0.026s
    sys     0m0.012s
    
    real    0m0.041s
    user    0m0.032s
    sys     0m0.009s
  • PHP7下的測試:
time /usr/local/php7/bin/php ./public/index.php
real    0m0.027s
user    0m0.021s
sys     0m0.005s

real    0m0.027s
user    0m0.018s
sys     0m0.009s

real    0m0.025s
user    0m0.023s
sys     0m0.002s

在入口測試下,可以看到PHP和PHP7沒有太大的差別,但PHP7還是稍微快一點。

(二)框架邏輯測試

在框架入口中重複使用第一步的邏輯:

<?php
namespace app\index\controller;

class Index
{
    public function index()
    {
       $arr = array();
       for ($i = 0; $i < 500000; $i++) {
           $arr[$i] = $i;
       }

       $tmp = array();
       foreach ($arr as $i) {
           if ($i % 2 == 0) {
               $is_exists = array_key_exists($i, $arr);
               if ($is_exists) {
                   array_push($tmp, $i);
               }
          }
      }
    }
}

PHP5版本:

time /usr/bin/php ./public/index.php
real    0m0.538s
user    0m0.463s
sys     0m0.072s

real    0m0.454s
user    0m0.386s
sys     0m0.065s

real    0m0.387s
user    0m0.331s
sys     0m0.055s

PHP7版本:

time /usr/local/php7/bin/php ./public/index.php
real    0m0.150s
user    0m0.123s
sys     0m0.024s

real    0m0.137s
user    0m0.105s
sys     0m0.031s

real    0m0.123s
user    0m0.096s
sys     0m0.026s

在thinkphp框架中使用PHP7版本,效能提升大約是PHP5版本的4倍!
  • laravel

然後我們測試下現在最火熱的PHP藝術家的框架。

(一) 框架入口測試

PHP5版本:

time /usr/bin/php ./public/index.php

real    0m0.104s
user    0m0.081s
sys     0m0.022s

real    0m0.148s
user    0m0.122s
sys     0m0.025s

real    0m0.122s
user    0m0.100s
sys     0m0.021s
PHP版本

time /usr/local/php7/bin/php ./public/index.php

real    0m0.079s
user    0m0.064s
sys     0m0.015s

real    0m0.081s
user    0m0.067s
sys     0m0.014s

real    0m0.067s
user    0m0.054s
sys     0m0.013s

我們可以看到laravel的框架入口測試中,PHP5和PHP7的表現差異不大,但即使PHP5最高快的0.081s也比PHP7版本最慢的0.067s慢。所以PHP7還是更勝一籌。

###(二)框架邏輯測試###### 試著增加一點邏輯,和thinkphp一樣,重複使用測試邏輯。 ### 先修改laravel路由,直接呼叫UserController的index方法:#########
Route::get(&#39;/&#39;, &#39;UserController@index&#39;);
###在index方法中寫入測試邏輯:###
public function index()
{
      $arr = array();
       for ($i = 0; $i < 500000; $i++) {
           $arr[$i] = $i;
       }

       $tmp = array();
       foreach ($arr as $i) {
           if ($i % 2 == 0) {
               $is_exists = array_key_exists($i, $arr);
               if ($is_exists) {
                   array_push($tmp, $i);
               }
          }
      }
}
###PHP5版本###
time /usr/bin/php ./public/index.php
real    0m0.510s
user    0m0.377s
sys     0m0.079s

real    0m0.627s
user    0m0.447s
sys     0m0.091s

real    0m0.519s
user    0m0.436s
sys     0m0.079s
### PHP7版本###
time /usr/local/php7/bin/php ./public/index.php

real    0m0.201s
user    0m0.167s
sys     0m0.032s

real    0m0.216s
user    0m0.174s
sys     0m0.040s

real    0m0.169s
user    0m0.134s
sys     0m0.034s
###PHP7效能提升了3到4倍######壓力測試######1000個請求,50個並發############ PHP5版本:##################### 三次樣本如下:#################################### ###########PHP7版本:############

透過壓力測試,在PHP7版本下,可以看到單一請求時間和請求完成時間以及每個連線請求實際運行時間的平均值都耗時更少,最重要的效能指標QPS也是高於PHP5的版本。

PHP7的opcache效能測試

開啟opcache:

臥槽!開啟了opcache的PHP7果然是要起飛的節奏,相比未開啟的PHP7性能提升了十幾倍,相比PHP5提升了將進20倍!問你怕不怕!

PHP腳本測試資料如下:

PHP7 vs PHP5.png

純php腳本測試過程,PHP7效能大約是PHP5的3到4倍。

壓力測試資料如下:

PHP5 vs PHP7 vs PHP7 OPCACHE.png

結論:

本文對PHP7和PHP5進行簡單對比,效能確實有3到4倍提升,無論是在php純腳本中,或是框架中,PHP7高效能的表現都是一致的。

PHP7很快,PHP7 OpCache飛快,PHP7確實牛逼,PHP的新時代已來臨,趕緊用起來!

相關文章推薦:

PHP中時間函數strtotime() 函數的原理講解

php中ts和nts的比較

以上是php7和php5有什麼不同之處? php5與php7的對比的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP中的依賴注入:避免常見的陷阱PHP中的依賴注入:避免常見的陷阱May 16, 2025 am 12:17 AM

DependencyInjection(DI)inPHPenhancescodeflexibilityandtestabilitybydecouplingdependencycreationfromusage.ToimplementDIeffectively:1)UseDIcontainersjudiciouslytoavoidover-engineering.2)Avoidconstructoroverloadbylimitingdependenciestothreeorfour.3)Adhe

如何加快PHP網站:性能調整如何加快PHP網站:性能調整May 16, 2025 am 12:12 AM

到Improveyourphpwebsite的實力,UsEthestertate:1)emplastOpCodeCachingWithOpcachetCachetOspeedUpScriptInterpretation.2)優化的atabasequesquesquesquelies berselectingOnlynlynnellynnessaryfields.3)usecachingsystemssslikeremememememcachedisemcachedtoredtoredtoredsatabaseloadch.4)

通過PHP發送大規模電子郵件:有可能嗎?通過PHP發送大規模電子郵件:有可能嗎?May 16, 2025 am 12:10 AM

是的,ItispossibletosendMassemailswithp.1)uselibrarieslikeLikePhpMailerorSwiftMailerForeffitedEmailsending.2)enasledeLaysBetenemailstoavoidSpamflagssspamflags.3))

PHP中依賴注入的目的是什麼?PHP中依賴注入的目的是什麼?May 16, 2025 am 12:10 AM

DependencyInjection(DI)inPHPisadesignpatternthatachievesInversionofControl(IoC)byallowingdependenciestobeinjectedintoclasses,enhancingmodularity,testability,andflexibility.DIdecouplesclassesfromspecificimplementations,makingcodemoremanageableandadapt

如何使用PHP發送電子郵件?如何使用PHP發送電子郵件?May 16, 2025 am 12:03 AM

使用PHP發送電子郵件的最佳方法包括:1.使用PHP的mail()函數進行基本發送;2.使用PHPMailer庫發送更複雜的HTML郵件;3.使用SendGrid等事務性郵件服務提高可靠性和分析能力。通過這些方法,可以確保郵件不僅到達收件箱,還能吸引收件人。

如何計算PHP多維數組的元素總數?如何計算PHP多維數組的元素總數?May 15, 2025 pm 09:00 PM

計算PHP多維數組的元素總數可以使用遞歸或迭代方法。 1.遞歸方法通過遍歷數組並遞歸處理嵌套數組來計數。 2.迭代方法使用棧來模擬遞歸,避免深度問題。 3.array_walk_recursive函數也能實現,但需手動計數。

PHP中do-while循環有什麼特點?PHP中do-while循環有什麼特點?May 15, 2025 pm 08:57 PM

在PHP中,do-while循環的特點是保證循環體至少執行一次,然後再根據條件決定是否繼續循環。 1)它在條件檢查之前執行循環體,適合需要確保操作至少執行一次的場景,如用戶輸入驗證和菜單系統。 2)然而,do-while循環的語法可能導致新手困惑,且可能增加不必要的性能開銷。

PHP中如何哈希字符串?PHP中如何哈希字符串?May 15, 2025 pm 08:54 PM

在PHP中高效地哈希字符串可以使用以下方法:1.使用md5函數進行快速哈希,但不適合密碼存儲。 2.使用sha256函數提高安全性。 3.使用password_hash函數處理密碼,提供最高安全性和便捷性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)