一、采用基准测试,检测代码的性能
基准测试涉及Web应用程序时,通常指“压力测试”,即在你的代码中尽可能多地加载流量,然后衡量它的执行能力。
推荐两种基准测试的工具:ApacheBench(ab)和JMeter。
要进行压力测试,我们需要两个东西:同时在线的用户和大量的请求。使用这些工具后,很多同时运行的应用程序线程便代表了用户。因此我们只需记住:并发线程=并发用户。
1、ApacheBench超级简单,通常包含了Apache安装,或是作为Apache开发包的一部分——一个被称为简单ab的二进制文件。要使用ab,只需指定请求的总数(-n),以及并发线程的数量(-c),然后让它开始工作。
例如:我们在这里使用-n 1000 -c 20生成20个并发线程执行1000个请求。
$ ab -n <span>1000</span> -c <span>20</span> http:<span>//</span><span>example.org/</span>
ab使用参考:http://httpd.apache.org/docs/2.0/programs/ab.html
2、JMeter是另一个具备GUI的Apache项目,而且具备更多功能。若要使用JMeter,你需要创建一个测试计划,添加线程组、添加采样器、指定JMeter的配置、添加Cookie处理器这样的其他选项、增加监听器处理结果。
JMeter网站:http://jmeter.apache.org/
二、利用缓存提高代码性能
1、对于Apache服务器,利用apc实现代码缓存。
从PECL(PHP Extension Community Library,PHP扩展共享类库)中获取APC进行编译,然后安装该扩展。
$ pecl install apc
在这之后,根据设置,需要编辑php.ini文件并添加它:
extension = apc.so
重新启动Apache,然后就可以了。
apc使用参考:http://www.php.net/manual/en/book.apc.php
2、对于Windows/IIS服务器,利用微软的WinCache实现代码缓存。
WinCache网站:http://www.iis.net/downloads/microsoft/wincache-extension
3、利用memcached实现会话数据缓存,memcached是基于内存的、群集友好的键/值对存储。如果你启用memcached扩展,就可以自动使用memcached代替磁盘存储回话。
memcached网站:http://memcached.org/
memcached使用参考:http://www.php.net/manual/zh/book.memcached.php
安装memcached:
$ pecl install memcache # Install ext/<span>memcache $ memcached </span>-d -m <span>128</span> # Start memcached
设置php.ini:
session.save_handler = <span>'</span><span>memcache</span><span>'</span><span> session.save_path </span>= <span>'</span><span>tcp://localhost:11211</span><span>'</span>
三、进行程序概要分析,寻找问题在哪里?
程序概要分析(profiling)是采用精确的时间或内存检测代码运行每个动作的行为。通过分析,找到问题的位置,然后进行优化。
我们有两个常用的profiling工具:
1、由Derick Rethans编写的可靠的Xdebug工具,并由KCachegrind或QCachegrind审核结果。
Xdebug网站:http://xdebug.org/
KCachegrind网站:http://sourceforge.jp/projects/freshmeat_kcachegrind/releases/
QCachegrind网站:http://sourceforge.jp/projects/freshmeat_kcachegrind/releases/
2、新开发的XHProf工具,是来自Facebook的一个应用,由Paul Reinheimer编写XHGui Web前段部分。
XHProf网站:http://pecl.php.net/package/xhprof
XHGui网站:https://github.com/perftools/xhgui
总结:
首先我们要解决性能下降这个最大的难题,这样便可获得整体性能的更好提升。如果一个SQL查询花费10秒,而你将它的执行速度提高了50%,这样你为自己节省了5秒;然而,如果执行一个PHP函数花费5秒,你同样将它的执行速度提高了50%,你实际上却只节省了半秒钟。在某些时候,你将受到硬件性能的绝对限制,以我们的经验你更有可能受到磁盘或网络I/O的限制,而不是CPU或RAM的限制。这时你需要开始在多台计算机上缩放应用程序。

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

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

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

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

判断方法: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(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

SublimeText3 Chinese version
Chinese version, very easy to use

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Dreamweaver CS6
Visual web development tools
