当前位置: 首页 > 图文教程 > 网络编程 > PHP > php优化及高效提速问题的实现方法

PHP
利用discuz实现PHP大文件上传应用实例代码
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
php在字符串中查找另一个字符串
php下HTTP Response中的Chunked编码实现方法
PHP实现定时生成HTML网站首页实例代码
PHP下一个非常全面获取图象信息的函数
PHP strtr() 函数使用说明
php 删除无限级目录与文件代码共享
php AJAX实例根据邮编自动完成地址信息
php miniBB中文乱码问题解决方法
cmd下运行php脚本
PHP 遍历XP文件夹下所有文件
php 移除数组重复元素的一点说明
discuz论坛 用户登录 后台程序代码
Optimizer与Debugger兼容性问题的解决方法
Zend Studio 无法启动的问题解决方法
php 页面执行时间计算代码
php smarty的预保留变量总结
php获取网页内容方法总结
php读取msn上的用户信息类

PHP 中的 php优化及高效提速问题的实现方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 164 ::
收藏到网摘: n/a

下面是phper在实际编写中,发现的一些问题,其它我们的好多代码,需要优化,很多程序都是可以再提速的 一、 在函数中,传递数组时使用 return 比使用 global 要高效,比如:
function userloginfo($usertemp){
$detail=explode("|",$usertemp);
return $detail;
}
$login=userloginfo($userdb);
  比
function userloginfo($usertemp){
global $detail;
$detail=explode("|",$usertemp);
}
userloginfo($userdb);
  要高效
二、 (这个代码用于得到程序目录对应的网址,推荐使用)
$urlarray=explode('/',$HTTP_SERVER_VARS['REQUEST_URI']);
$urlcount=count($urlarray);unset($urlarray[$urlcount-1]);
$ofstarurl='http://'.$HTTP_SERVER_VARS['HTTP_HOST'].implode('/',$urlarray);
  这段代码比
$pre_urlarray=explode('/',$HTTP_SERVER_VARS['HTTP_REFERER']);
$pre_url=array_pop($pre_urlarray);
  要高效
三、 在循环中判断时,数值判断使用恒等要比等于高效
  $a=2;$b=2;
  比如
if($a==$b)$c=$a;
  比
if($a===$b)$c=$a;
  高效
四、 MySQL 查询时尽量使用where in 少用 limit
  limit查多记录的前几条, 速度很快, 但是查询最面几条就会慢
  使用in .在查询连续性记录,非常快, 非连续性记录第一次运行会稍微慢一点,但是之后将比较快!
五、 NT服务器数据操作稳定性不及unix/Linux
六、 输出前使用尽量使用 ob_start();
可以加快输出速度,适用NT或nuli/linux,对unlix类服务器 如果使用 ob_start('ob_gzhandler');输出效率将更高
七、 判断的时候尽量使用if($a==他的值)
否定的时候尽量使用if(empty($a)),因为这样程序运行更快速
八、 使用不等时 != 与 <>效率相当
九、 个人经验得 使用 $a="11111111111111"; 的效率和 $a='11111111111111'; 相当.并不象书本说的相差很大
十、 使用规范的SQL语句, 会有利于MySQL的解析
十一、 使用
if($online){
$online1=$online;
setcookie('online1',$online,$cookietime,$ckpath,$ckdomain,$secure);
}
  COOKIE将马上生效
  使用
if($online)
setcookie('online1',$online,$cookietime,$ckpath,$ckdomain,$secure);
  COOKIE需要再刷新一次才能生效
十二、 使用
$handle=fopen($filename,wb);
flock($handle,LOCK_SH);
$filedata=fread($handle,filesize($filename));
fclose($handle);
  比
file($filename);
  无论在速度还是稳定上都要优秀
下面是phper在实际编写中,发现的一些问题,其它我们的好多代码,需要优化,很多程序都是可以再提速的
十三、 截断字符串优化函数(可避免?字符出现)
function substrs($content,$length) {
if(strlen($content)>$length){
$num=0;
for($i=0;$i<$length-3;$i++) {
if(ord($content[$i])>127)$num++;
}
$num%2==1 ? $content=substr($content,0,$length-4):$content=substr($content,0,$length-3);
$content.=' ';
}
return $content;
}
  比如 $newarray[1]=substrs($newarray[1],25);
十四、 程序中屏蔽大小写
for ($asc=65;$asc<=90;$asC++)
{ //strtolower() 此函数在一些服务器会产生乱码!
if (strrpos($regname,chr($asc))!==false)
{
$error="为了避免用户名混乱,用户名中禁止使用大写字母,请使用小写字母";
$reg_check=0;
}
}
十五、 不使用 file();和不使用 fget();(不稳定或速度慢) 取一数组函数
function openfile($filename,$method="rb")
{
$handle=@fopen($filename,$method);
@flock($handle,LOCK_SH);
@$filedata=fread($handle,filesize($filename));
@fclose($handle);
$filedata=str_replace("\n","\n",$filedata);
$filedb=explode("",$filedata);
//array_pop($filedb);
$count=count($filedb);
if($filedb[$count-1]==''){unset($filedb[$count-1]);}
return $filedb;
}
第二部分:
1.在可以用file_get_contents替代file、fopen、feof、fgets等系列 方法 的情况下,尽量用file_get_contents,因为他的效率高得多!但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题;
2.尽量的少进行文件操作,虽然PHP的文件操作效率也不低的;
3.优化Select SQL语句,在可能的情况下尽量少的进行Insert、Update操作(在update上,我被恶批过);
4.尽可能的使用PHP内部函数(但是我却为了找个PHP里面不存在的函数,浪费了本可以写出一个自定义函数的时间,经验问题啊!);
5.循环内部不要声明变量,尤其是大变量: 对象 (这好像不只是PHP里面要注意的问题吧?);
6.多维数组尽量不要循环嵌套赋值;
7.在可以用PHP内部字符串操作函数的情况下,不要用 正则表达式 ;
8.foreach效率更高,尽量用foreach代替while和for循环;
9.用单引号替代双引号引用字符串;
10.“用i+=1代替i=i+1。符合c/c++的习惯,效率还高”;