优化PHP代码的42条建议
1.如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。
2.echo 比 print 快。
3.使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。
4.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。
5.注销那些不用的变量尤其是大数组,以便释放内存。
6.尽量避免使用__get,__set,__autoload。
7.require_once()代价昂贵。
8.在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。
9.如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。
10.函数代替正则表达式完成相同功能。
11.str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。
12.如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只
写一行代码接受数组作为查询和替换的参数。
13.使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。
14.用@屏蔽错误消息的做法非常低效。
15.打开apache的mod_deflate模块。
16.数据库连接当使用完毕时应关掉。
17.$row[‘id’]的效率是$row[id]的7倍。
18.错误消息代价昂贵。
19.尽量不要在for循环中使用函数,比如for ($x=0; $x < count($array);
$x)每循环一次都会调用count()函数。
20.在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。
21.递增一个全局变量要比递增一个局部变量慢2倍。
22.递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。
23.递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。
24.仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)。PHP大概会检查看是否存在全局变量。
25.方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加了10个方法,但性能上没有变化。
26.派生类中的方法运行起来要快于在基类中定义的同样的方法。
27.调用带有一个参数的空函数,其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。
28.用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻
相关文档:
本文转自我的博客:(my.unix-center.net/~xiaoshe)
http://my.unix-center.net/~xiaoshe/2010/04/19/%E4%B8%80%E4%B8%AA%E8%B6%85%E7%BA%A7%E7%AE%80%E5%8D%95%E7%9A%84php%E6%8A%95%E7%A5%A8%E7%B3%BB%E7%BB%9F%EF%BC%8C%E4%B8%8D%E4%BD%BF%E7%94%A8%E6%95%B0%E6%8D%AE%E5%BA%93/
从网上发现的一个超级简单的基于php的投 ......
如果在PHP中要实现对彩票的实现应该怎么做呢?
根据前面几张提到的几种数组用法:PHP顺序排序,PHP——二分法查找数据,在PHP数组中搜索指定的值,PHP数组的入栈与出栈,合并PHP数组,能够实现彩票功能吗?
答案是:可以。但是这样做的代码会变得很臃肿。
这时,我看到了php的shuffle函数。shuffle函数可 ......
// 连接两个字符串
<?php
$txt1 = "Hello";
$txt2 = "PHP";
echo $txt1." ".$txt2;
?>
// 取得字符串中的字符数
<?php
$txt1 = "Abc";
echo strlen($txt1);
......
先说下在做的过程中遇到的一些问题,以及解决的方法吧
1.关于书写错误
最开始做的是一个登陆模块,在登陆验证的时候,使用$_POST接收的参数,然后在验证的时候,却怎么也接收不到这两个值,后来才发现$_POST写错了,写成$POST 少个下划线,结果无法正确的验证,很是郁闷。花了好长时间,才找到原因,而且还是一个低 ......
经典循环例子
<HTML>
<HEAD>
<TITLE>经典循环例子</TITLE>
</HEAD>
<BODY>
<?
for($counter = 1; $counter <= 6; $counter++)
//循环6次
{
print("<B& ......