浅谈PHP优化中应注意的地方
优化大型化,而不是与一些程序代码争
我这里所说的优化,基本上是从服务器,Apache,数据库优化这些方面,而不是在你的PHP代码加以改进,从而提高程序的运行速度,因为你将比用于字符串处理函数正则化方法以提高程序的运行速度,优化成本一个大的范围要比这小得多,得到的回报却丰富。
优化非代码有以下好处:
1,一般来说,它可以大大提高效率。
2,它并不危及代码的完整性。
三.可以快速部署
缓存技术
下面是常用的缓存技术,它们可以通过这些缓存技术大大提高效率。
当谈到缓存技术缓存已经被提到。memcached是一种高效、快速的分布式的内存对象缓存系统,它主要用来加速动态Web应用程序。
memcached的原则
memcached是一个或多个服务器守护进程的方式运行,等待接收客户端的连接操作,而客户端可以用多种语言(比如PHP),php在客户端建立与memcached服务连接后,下一步是访问对象,每个被访问的对象一个唯一的标识符,通过访问操作的关键,保存缓存对象实际上是放置在内存中,而不是存储在缓存中的缓存文件,为什么能如此快速有效的原因。
在这里是常见的缓存,缓存的方法
1、编写和操作码缓存
因为PHP是一种解释型语言,所以每个PHP运行时文件需要编译执行后,同样的文件,不同的用户在不同时间或同一用户访问同一个文件,每一次你需要重新编译和运行,所以它需要很多时间。
通过编译和缓存,每个文件在修改后只编译一次,从而减少了文件IO操作。用户访问后,机器指令直接从内存中取出并执行,而不是在硬盘中读取。
最常见的PHP编译缓存工具有:APC、加速器、XCache
2。全局页面缓存- Squid Cache
SQUID缓存(简称SQUID)是一种流行的免费软件(GNU通用公共许可证)代理服务器和Web缓存服务器。枪乌贼作为Web服务器的前端缓存服务器,通过缓存相关请求提高了web服务器的运行速度。
3,sql缓存本地缓存
在大多数应用程序中,主要的瓶颈常常可以追溯到数据库的操作。一般来说,由于复杂的数据库查询,会消耗大量的时间。SQL缓存可以大大减少复杂查询造成的负载。
SQL缓存实例(使用memcached扩展)
代码段:
复制代码代码如下所示:
$ = MD5(某种SQL查询);
如果(!($结果= memcache_get($关键))){
结果=美元美元PDO ->查询($ QRY)-> fetchall();
在一小时内缓存查询结果。
memcache_set($美元关键,结果,空,3600);
}
4,本地缓存的块缓存
为了优化PHP程序,有时我们必须优化一段代码,以减少一点执行时间,不同的PHP代码,而不是优化复杂,而不是通过缓存忽略这些优化代码,这样做的好处:
1,能快速看到效果。
2。它不会破坏以前的代码。
三.速度比代码的优化快得多。
一个代码块缓存Liezi(也用memcached伸展)
代码段:
复制代码代码如下所示:
功能complex_function_abc($,$,$ C){
关键__function__美元=。序列化
(func_get_args());
如果(!($结果= memcache_get($关键))){
$结果/函数代码
存储执行结果1小时
memcache_set($美元关键,结果,空,3600);
}
返回$结果;
}
当然,除了上述方法之外,文件缓存还可以用于在数据库中提取和存储数据,也可以生成静态HTML文件。然而,这些方法缓存或存储硬盘上的文件而不是内存。
输出控制
除了上述缓存技术之外,程序还可以用较少的时间执行输出控制。
下面是PHP和Apache谈论输出控件
1,PHP输出控件
这里是ob_start最重要的使用()和PHP的OB系列功能。这些功能能起什么作用
第一种是静态模板技术,所谓静态模板技术在某种程度上使用户位于PHP页面生成的HTML页面的客户端,如果HTML页面没有更新,那么当另一个用户再次访问该页面时,该程序将不再调用PHP和相关数据库。对于一些比较大的信息网站,如新浪、163、搜狐。这种技术的好处是非常巨大的。
代码示例:
复制代码代码如下所示:
< PHP
(ob_start) / /打开缓冲区;
>
PHP页面的所有输出
复制代码代码如下所示:
< PHP
$content = ob_get_contents(PHP); / /把所有内容页输出
$ FP = fopen(output.html,W); / /创建一个文件,并打开,准备写
fwrite($ FP,$content); / /把PHP页面写所有的output.html,然后......
Fclose($ FP);
>
当然,这个OB系列函数,还有很多其他用途我在此不解释。
2,Apache输出控件
设置发送缓存区的大小为一个页面大小允许你把页面立即发送缓冲区来提高处理速度。
指令的发送缓存区的大小
说明:TCP发送缓冲区大小(字节)
语法:发送缓存区的大小字节
默认值:发送缓存区的大小0
作用域:服务器配置
状态:MPM
模块:BeOS,mpm_netware,mpm_winnt,mpmt_os2,prefork,工人
该指令集的大小(字节)的服务器的TCP发送缓冲区,增加这个值可以带来两个后果:高速度和高延迟(约100ms)。如果设置为0
通过源代码编译您的数据库,使您的程序可以将速度提高10到15%。
下面说你应该注意代码优化
1。短代码不等于快代码。
许多人在编写程序时想要编写更简洁的代码,但更短的代码有时需要更长的执行时间,所以即使他们使用更多的代码,也不会使用慢代码。
2。编写程序时,要注意程序的可扩展性,而不是速度的追求。
三.在优化代码之前,先看看数据库的一部分,因为大多数应用程序瓶颈都在数据库中而不是代码中。
4、微观优化不值得损失。
所谓的微优化,而不是字符串函数,就像正则表达式的前一部分:
(1)这需要很长时间。
(2)它不会解决你的性能问题。
(3)可以销毁以前的代码以产生未知的错误。
(4)付出多于回报
还有一个错误要提。有些人采取的优化考虑,为了使程序更加优化和分析业务逻辑,从而改变业务逻辑,为了得到更好的代码。这是一个很愚蠢的想法,因为一个程序的目的是为了解决所遇到的现实问题,而这些问题,所以我们怎么能本末倒置
PHP优化是一个永恒的话题。如果我们想得出一个全面的结论,那就不太现实了。这里只是一些个人经历,这些并不总是正确的。