PHP 编程技巧与优化
PHP 编程技巧与优化
- 1、 尽量采用大量的PHP内置函数。
- 2、 使用
echo代替print,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接 - 3、 用单引号代替双引号来包含字符串,这样做会更快一些。
- 4、
$row['id']的效率是$row[id]的7倍。 - 5、 在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。
- 6、 如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用
$_SERVER['REQUEST_TIME']要好于time() - 7、 函数代替正则表达式完成相同功能,
str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。 - 8、 尽量不要在for循环中使用函数,比如
for ($x=0; $x < count($array); $x++)每循环一次都会调用count()函数。 - 9、 Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。
- 10、如果能将类的方法定义成
static,就尽量定义成static,它的速度会提升将近4倍。 - 11、尽量使用
foreach代替for/while - 12、读取小文件使用
fread,读取大文件使用file_get_contents,特大的文件使用fseek - 13、在验证 email 地址时使用
checkdnsrr()函数验证域名是否存在,这个内置函数能够确认指定的域名能够解析成 IP 地址 - 14、使用
error_reporting(0)函数来防止用户看到潜在的敏感错误信息。在理想情况下,发布服务器应该在php.ini里完全禁止。但是如果你用的是一个共享的 web 服务器的话,你没有自己的 php、ini 文件,那么这种情况下你最好的选择就是在所有脚本的第一行前加上error_reporting(0) - 15、在网数据库中存储很大的字符串之前使用
gzcompress()和gzuncompress()来显式的压缩/解压字符串 - 16、完全理解"魔术引号"和 SQL 注入的危险性,最简单的防止sql注入的方法:在php、ini中将
magic_quotes设置为On,使用mysql_real_escape_string()函数转义 - 17、不要相信用户提交的数据,一定使用
htmlentities()或htmlspecialchars()先进行转义 - 18、当执行变量
$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言 - 19、并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存
- 20、mod_zip可作为Apache模块,用来即时压缩你的数据,并可让数据传输量降低80%
PHP 编程技巧与优化的更多相关文章
- Java编程技巧:if-else优化实践总结归纳
文/朱季谦 说实话,其实我很讨厌在代码里大量使用if-else,一是因为该类代码属于面向过程的,二嘛,则是会显得代码过于冗余.这篇笔记,主要记录一些自己在工作实践当中针对if-else的优化心得,将会 ...
- java命名规范和编程技巧
一个好的java程序首先命名要规范. 命名规范 定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,方便维护等作用 Package 的命名 Package 的名字应该都是由一个小写 ...
- 从linux内核中学到的编程技巧 【转】
从linux内核中学到的编程技巧 分类: LINUX 1构建泛型宏 (./linux/include/linux/kernel.h) #define min(x, y) ({ \ typeof(x ...
- VB编程技巧推荐
VB编程技巧推荐 1.zyl910的专栏——理论水平高 用VB写高效的图像处理程序 V2.0 优化分支代码——避免跳转指令堵塞流水线 2.Laviewpbt的专栏 —— 有很多算法的代码,实用性高 ...
- 浅谈自底向上的Shell脚本编程及效率优化
作者:沐星晨 出处:http://blog.csdn.net/sosodream/article/details/6276758 浅谈自底向上的Shell脚本编程及效率优化 小论文,大家多批评指导:) ...
- js异步编程技巧一
异步回调是js的一大特性,理解好用好这个特性可以写出很高质量的代码.分享一些实际用的一些异步编程技巧. 1.我们有些应用环境是需要等待两个http请求或IO操作返回后进行后续逻辑的处理.而这种情况使用 ...
- EF – 2.EF数据查询基础(上)查询数据的实用编程技巧
目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...
- VC多文档编程技巧(取消一开始时打开的空白文档)
VC多文档编程技巧(取消一开始时打开的空白文档) http://blog.csdn.net/crazyvoice/article/details/6185461 VC多文档编程技巧(取消一开始时打开的 ...
- 无插件Vim编程技巧
无插件Vim编程技巧 http://bbs.byr.cn/#!article/buptAUTA/59钻风 2014-03-24 09:43:46 发表于:vim 相信大家看过<简明Vim教程& ...
- 深入理解C#:编程技巧总结(二)
原创文章,转载请注明出处! 以下总结参阅了:MSDN文档.<C#高级编程>.<C#本质论>.前辈们的博客等资料,如有不正确的地方,请帮忙及时指出!以免误导! 在上一篇 深入理解 ...
随机推荐
- 0x61 图论-最短路
B题 Telephone Lines https://ac.nowcoder.com/acm/contest/1055/B 中文题面:https://www.luogu.com.cn/problem/ ...
- 12、SpringBoot-mybatis-plus-ehcache
系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...
- Spring的@Async使用防坑
很多人会直接只用@Async来执行异步操作.但是这里面有一个问题,如果都是用spring的默认实现,是有坑的. 当我们开启 EnableAsync 只有就使用Async来执行异步操作了. 走JDK的动 ...
- C#设计模式14——模板方法的写法
模板方法(Template Method)是一种设计模式,它定义了一个操作中的算法的骨架,将某些步骤推迟到子类中实现,从而使得子类可以在不改变算法骨架的情况下重新定义算法的某些步骤. 作用: 使用模板 ...
- wiremock设置接口入参的判断条件
一.wiremock管理台url: http://192.168.37.8:7777/__admin/swagger-ui/ 可重启测试桩,获取响应信息等操作 二.设置接口响应入参的判断条件 如当影 ...
- iframe访问页面,出现 ERR_BLOCKED_BY_RESPONSE
那是因为服务器输出了 X-Frame-Options 头,只要把这个头删除掉,就没问题了
- Nginx长连接学习之二
Nginx长连接学习之二 背景 距离最开始学习Nginx的长连接已经一年半; 距离最开始学习Linux的TCP内核参数也已经过去了一年. 最近产品再次出现了TCP链接相关的问题. 因为一开始不知道部署 ...
- [官网]微软服务器TLS的支持情况
https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-#tls-pro ...
- [转帖]TIDB - 使用 Dumpling 和 TiDB Lightning 迁移Mysql数据至TIDB中
一.TiDB Lightning介绍 TiDB Lightning 是一个将全量数据高速导入到 TiDB 集群的工具,目前支持 Mydumper 或 CSV 输出格式的数据源.你可以在以下两种场景下使 ...
- [转帖]elasticsearch 8.0 linux安装部署
1. 下载安装包 https://www.elastic.co/cn/downloads/elasticsearch 选择下载linux版本,elasticsearch-8.0.0-linux-x86 ...