Jadual Kandungan
安装两个PHP版本
PHP7和PHP5的对决
1. 纯php脚本测试
2.php数据库操作测试
3.PHP框架测试
thinkphp
laravel
Rumah pembangunan bahagian belakang PHP7 PHP7真的有那么厉害吗?

PHP7真的有那么厉害吗?

Jul 07, 2021 am 09:38 AM
php7

PHP7正式发布到现在已经一年半了,刚出道就号称比旧版本快了几倍,各种开源框架或系统运行在PHP7上速度效率提高了几倍,反正不管是媒体还是开发者都在煽风点火,不,应该是赞不绝口。今天我们就来测试一下看看效果。

PHP7真的有那么厉害吗?

PHP7正式发布到现在已经一年半了,刚出道就号称比旧版本快了几倍,各种开源框架或系统运行在PHP7上速度效率提高了几倍,反正不管是媒体还是开发者都在煽风点火,不,应该是赞不绝口。

我就静静看你们装逼,不说话。

一般手机系统升级我是跑最后的,因为不愿意踩坑,毕竟iOS和Android这种系统都会出现bug,何况世界上被人黑的最多的语言。

今日时机已到,看看PHP7有没有传说的那么王炸。

安装两个PHP版本

http://php.net/ 已经有最新PHP7的最新版本,大家可自行下载。

为了测试PHP5和PHP7(PHP6已被放弃,心疼1s)的性能,我在不同的目录安装了两个php版本。

安装过程就略过了,无论源码安装还是包管理工具安装,记得自己的路径即可。

PHP7:

1

2

3

4

# /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

Salin selepas log masuk

PHP5:

1

2

3

4

# /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

Salin selepas log masuk

环境说明:为了保证最佳的测试效果,本次测试在直接在生产环境进行,更逼近真实情况。

操作系统:CentOS 7.2 64位

基础配置:1核 1GB 1Mbps

主机品牌:腾讯云

PHP7和PHP5的对决

1. 纯php脚本测试

vim test.php

1

2

3

4

5

6

7

8

9

10

11

12

13

$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);

                }

            }

        }

Salin selepas log masuk

PHP5版本测试:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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

Salin selepas log masuk

PHP7版本测试:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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

Salin selepas log masuk

通过数据可以看出来,单纯的php脚本测试,可以看出php7性能提升了3到4倍。

2.php数据库操作测试

首先我们创建一个用户表:

1

2

3

4

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

Salin selepas log masuk

给test_user表插入一条数据:

1

2

3

4

insert into test_user (uid,name) values (1,"dada");

MariaDB [test]> select * from test_user;

+-----+------+

| uid | name | +-----+------+ | 1 | dada | +-----+------+

Salin selepas log masuk

创建数据库测试脚本test_db.php,确保你的两个PHP版本都安装了PDO扩展。

1

2

3

4

5

6

7

/usr/bin/php -m|grep pdo

pdo_mysql

pdo_sqlite

 

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

pdo_mysql

pdo_sqlite

Salin selepas log masuk

我的两个PHP版本已经安装了PDO(不要再使用php_mysql扩展,已经过时了,PHP7已经完全抛弃,mysqli也不建议使用)。

接下来我们通过PDO编写脚本,测试select执行50万次的性能对比:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

$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;];

        }

    }

Salin selepas log masuk

PHP5测试test_db.php:

1

2

3

4

5

6

7

8

9

10

11

12

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

Salin selepas log masuk

PHP7测试test_db.php:

1

2

3

4

5

6

7

8

9

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

Salin selepas log masuk

这次脚本执行了50w次查询,user执行时间PHP7执行的脚本几乎都比PHP5要少一秒!是少一秒不是一毫秒。

3.PHP框架测试

  • thinkphp

国内肯定是首选thinkphp框架,选择最新的thinkphp5。我这里直接在官网下载的thinkphp5.0.9版本。

  • (一)框架入口测试

PHP5下的测试:

1

2

3

4

5

6

7

8

9

10

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

Salin selepas log masuk

PHP7下的测试:

1

2

3

4

5

6

7

8

9

10

11

12

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

Salin selepas log masuk

在入口测试下,可以看到PHP和PHP7没有太大的区别,但PHP7还是稍微快一点。

  • (二)框架逻辑测试
    在框架入口复用第一步的逻辑:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<?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);

                    }

                }

            }

        }

  }

Salin selepas log masuk

PHP5版本:

1

2

3

4

5

6

7

8

9

10

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

Salin selepas log masuk

PHP7版本:

1

2

3

4

5

6

7

8

9

10

11

12

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

Salin selepas log masuk

在thinkphp框架中使用PHP7版本,性能提升大约是PHP5版本的4倍!

  • laravel

然后我们测试下现在最火热的PHP艺术家的框架。

  • (一) 框架入口测试
    PHP5版本:

1

2

3

4

5

6

7

8

9

10

11

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

Salin selepas log masuk

PHP版本

1

2

3

4

5

6

7

8

9

10

11

12

13

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

Salin selepas log masuk

我们可以看到laravel的框架入口测试中,PHP5和PHP7的表现差异不大,但即使PHP5最高快的0.081s也比PHP7版本最慢的0.067s要慢。所以PHP7还是更胜一筹。

  • (二)框架逻辑测试
    尝试增加一点逻辑,和thinkphp一样,复用测试逻辑。首先修改laravel路由,直接调用UserController的index方法:

1

Route::get(&#39;/&#39;, &#39;UserController@index&#39;);

Salin selepas log masuk

在index方法中写入测试逻辑:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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);

             }

         }

      }

  }

Salin selepas log masuk

PHP5版本

1

2

3

4

5

6

7

8

9

10

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

Salin selepas log masuk

PHP7版本

1

2

3

4

5

6

7

8

9

10

11

12

13

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

Salin selepas log masuk

PHP7性能提升了3到4倍

推荐学习:php视频教程

结论:

本文对PHP7和PHP5进行简单对比,性能确实有3到4倍提升,无论是在php纯脚本中,还是在框架中,PHP7高性能的表现都是一致的。

PHP7很快,PHP7+OpCache飞快,PHP7确实牛逼,PHP的新时代已来临,赶紧用起来!

Atas ialah kandungan terperinci PHP7真的有那么厉害吗?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyelesaikan masalah apabila php7 mengesan bahawa port tcp tidak berfungsi Bagaimana untuk menyelesaikan masalah apabila php7 mengesan bahawa port tcp tidak berfungsi Mar 22, 2023 am 09:30 AM

Dalam php5, kita boleh menggunakan fungsi fsockopen() untuk mengesan port TCP. Fungsi ini boleh digunakan untuk membuka sambungan rangkaian dan melakukan beberapa komunikasi rangkaian. Tetapi dalam php7, fungsi fsockopen() mungkin menghadapi beberapa masalah, seperti tidak dapat membuka port, tidak dapat menyambung ke pelayan, dsb. Untuk menyelesaikan masalah ini, kita boleh menggunakan fungsi socket_create() dan fungsi socket_connect() untuk mengesan port TCP.

Bagaimana untuk memasang sambungan mongo dalam php7.0 Bagaimana untuk memasang sambungan mongo dalam php7.0 Nov 21, 2022 am 10:25 AM

Cara memasang sambungan mongo dalam php7.0: 1. Buat kumpulan pengguna dan pengguna mongodb 2. Muat turun pakej kod sumber mongodb dan letakkan pakej kod sumber dalam direktori "/usr/local/src/" 3. Masukkan direktori "src/" 4. Buka zip pakej kod sumber 5. Buat direktori fail mongodb 6. Salin fail ke direktori "mongodb/" 7. Buat fail konfigurasi mongodb;

Apakah yang perlu saya lakukan jika pemalam dipasang dalam php7.0 tetapi ia masih menunjukkan bahawa ia tidak dipasang? Apakah yang perlu saya lakukan jika pemalam dipasang dalam php7.0 tetapi ia masih menunjukkan bahawa ia tidak dipasang? Apr 02, 2024 pm 07:39 PM

Untuk menyelesaikan pemalam yang tidak menunjukkan isu yang dipasang dalam PHP 7.0: Semak konfigurasi pemalam dan dayakan pemalam. Mulakan semula PHP untuk menggunakan perubahan konfigurasi. Semak kebenaran fail pemalam untuk memastikan ia betul. Pasang kebergantungan yang hilang untuk memastikan pemalam berfungsi dengan betul. Jika semua langkah lain gagal, bina semula PHP. Punca lain yang mungkin termasuk versi pemalam yang tidak serasi, memuatkan versi yang salah atau isu konfigurasi PHP.

Mana satu lebih baik, php8 atau php7? Mana satu lebih baik, php8 atau php7? Nov 16, 2023 pm 03:09 PM

Berbanding dengan PHP7, PHP8 mempunyai beberapa kelebihan dan penambahbaikan dari segi prestasi, ciri baharu dan penambahbaikan sintaks, sistem jenis, pengendalian ralat dan sambungan. Walau bagaimanapun, memilih versi yang hendak digunakan bergantung pada keperluan khusus anda dan keadaan projek. Pengenalan terperinci: 1. Peningkatan prestasi, PHP8 memperkenalkan pengkompil Just-in-Time (JIT), yang boleh meningkatkan kelajuan pelaksanaan kod 2. Ciri baharu dan penambahbaikan sintaks, PHP8 menyokong pengisytiharan parameter yang dinamakan dan parameter pilihan, membuat fungsi Panggilan adalah lebih fleksibel kelas tanpa nama, jenis pengisytiharan sifat, dsb.

Cara memasang dan menggunakan php7.0 Cara memasang dan menggunakan php7.0 Nov 30, 2022 am 09:56 AM

Cara memasang dan menggunakan php7.0: 1. Pergi ke laman web rasmi PHP untuk memuat turun versi pemasangan yang sepadan dengan sistem tempatan 2. Ekstrak fail zip yang dimuat turun ke direktori yang ditentukan 3. Buka tetingkap baris arahan dan pergi ke direktori "E:\php7" Hanya jalankan arahan "php -v".

Apr 09, 2024 pm 01:33 PM

Penyelesaian biasa untuk persekitaran pelayan PHP termasuk memastikan versi PHP yang betul dipasang dan fail yang berkaitan telah disalin ke direktori modul. Lumpuhkan SELinux buat sementara waktu atau selama-lamanya. Semak dan konfigurasikan PHP.ini untuk memastikan sambungan yang diperlukan telah ditambah dan disediakan dengan betul. Mulakan atau mulakan semula perkhidmatan PHP-FPM. Semak tetapan DNS untuk isu penyelesaian.

Bagaimana untuk memuat turun dan memasang php7 (perkongsian tutorial) Bagaimana untuk memuat turun dan memasang php7 (perkongsian tutorial) Mar 23, 2023 pm 02:11 PM

Dengan perkembangan teknologi Internet, bahasa pengaturcaraan komputer juga terus dibangunkan dan dikemas kini. Sebagai bahasa pengaturcaraan yang digunakan secara meluas dalam bidang pembangunan web, PHP telah mengalami pelbagai kemas kini versi selama bertahun-tahun, dan versi terkini PHP7 telah meningkatkan prestasi dan kestabilannya. Untuk menggunakan bahasa pengaturcaraan PHP dengan lebih baik, artikel ini akan memperkenalkan tutorial muat turun dan pemasangan PHP7 untuk rujukan pemula.

Rakam sekali dan gunakan strace untuk mendiagnosis masalah PHP menduduki terlalu banyak sumber sistem. Rakam sekali dan gunakan strace untuk mendiagnosis masalah PHP menduduki terlalu banyak sumber sistem. May 03, 2024 pm 04:31 PM

Persekitaran setempat: sistem redhat6.7. nginx1.12.1, php7.1.0, kod menggunakan masalah rangka kerja yii2: tapak web tempatan perlu menggunakan perkhidmatan elasticsearch. Apabila PHP menggunakan elasticsearch yang dibina pada pelayan tempatan, beban tempatan adalah normal. Apabila saya menggunakan perkhidmatan elasticsearch AWS, beban pada pelayan tempatan selalunya terlalu tinggi. Semak log nginx dan php dan tidak mencari pengecualian. Bilangan sambungan serentak dalam sistem juga tidak tinggi. Pada masa ini, saya memikirkan alat diagnostik jejak yang bos kami beritahu saya. Proses penyahpepijatan: Cari idstrace sub-proses php-

See all articles