本篇文章给大家带来的内容是关于php性能优化的理论知识讲解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
什么情况下,遇到了PHP性能问题?
1 PHP语法使用的不恰当
2 使用PHP语言做不了它不擅长做的事
3 用php语言连接的服务不给力
4 PHP自身的短板
5 我也不知道的问题
性能问题解析
PHP的性能问题,占整个项目性能问题的比例 不到50%
性能优化项目,不要局限于仅优化PHP
php语言级的性能优化
|
|
|
php周边问题的性能优化
|
|
|
php语言自身分析,优化
PHP 压力测试工具ab简介
Apache Benchmark(ab)(可以自行下载)
ab是由Apache提供的压力测试软件,安装apache服务器时会自带该压测软件。
如何使用?
./ab -n1000 -c100 http://www.baidu.com/
-n请求数
-c并发数
url目标压测地址
PHP-压力测试工具使用演示
主要关注 每秒并发尽可能的多
请求耗时尽可能的少
多使用PHP自身能力
优化:少写代码,多用PHP自身能力
性能问题: 自身代码冗余较多,可读性不佳,并且性能低
为甚性能低?
PHP代码需要编译解析为底层语言,这一过程每次请求都会处理一遍,开销大。
好的方法:
多使用PHP内置变量\常量\函数
PHP自身能力性能测试之代码准备
php代码运行流程
*.php ---Scanner---> Exprs -----Parser--->Opcodes---Exec--->Output
php内置函数之间的性能测试
优化点:php内置函数的性能优劣
情况描述: php内置函数,之间依然存在块慢差异
好的建议: 多去了解PHP内置函数的时间复杂度
php内置函数之间的性能测试之代码测试
isset($arr[$i]); //平均50ms array_key_exists($i,$arr);//平均85ms
减少PHP魔法函数的使用
情况描述: PHP提供的魔法函数,性能不佳
为什么性能低 为了给PHP程序猿省事 PHP语言为你做了很多
好的方法:尽可能规避使用PHP魔法函数
PHP 禁用错误抑制符
@的实际逻辑
在代码开始前 结束后 增加 Opcode 忽略报错
php -dv|d.active=1 -dv|d.execute=0 at.php
只是想查看并不是真的想执行
PHP-合理的使用内存和正则表达式
优化点:合理使用内存
PHP有内存回收机制保底,但也请小心使用内存
好的建议
利用unset() 及时释放不使用的内存(注:unset()出现注销不掉的情况)
尽量少的使用正则表达式
正则表达式的回溯开销较大,
好的建议:
利用字符串处理函数,实现相同逻辑
PHP-避免在循环内做运算
优化点:避免在循环内做运算
情况描述:
循环内的计算式将会被重复计算
代码示例:
<?php $str = "hello world"; for($i=0;$i<strlen($str);$i++) { //do something }
PHP-减少计算密集型业务
PHP不适合密集型运算的场景
PHP语言特性决定了PHP不适合做大数据量运算
PHP适合场景
适合衔接Webserver与后盾服务,UI呈现
PHP-务必使用带引号字符串做键值
PHP会将没有引号的键值当做常量,产生查找常量的开销
严格使用引号的字符串作为键值
PHP周边问题的分析与阐述
PHP周边都有什么?
linux运行环境 php 硬盘(文件存储) 数据库(例如mysql) 缓存 网络
php周边对PHP程序的影响分析
减少文件类的操作
常见PHP场景的开销次序:
读写磁盘 读写数据库 读写内存 读写网络数据
读写内存 60acb7cb4bcec03586cc53ddd0bdb3b0 Process1 ->process2 ->process3 -> process4->
旁路方案: x.php -> Process1 ->process2(同时) ->Process3 (同时) -->Process4->
Atas ialah kandungan terperinci php性能优化的理论知识讲解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Dreamweaver Mac版
Alat pembangunan web visual

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.
