php代码优化及php相关问题总结


Posted in PHP onOctober 09, 2006

1,在函数中,传递数组时
使用 return 比使用 global 要高效
比如

function userloginfo($usertemp){
$detail=explode("|",$usertemp);
return $detail;
}
$login=userloginfo($userdb);

function userloginfo($usertemp){
global $detail;
$detail=explode("|",$usertemp);
}
userloginfo($userdb);

 

要高效

2,(这个代码用于得到程序目录对应的网址,推荐使用)

$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);

要高效

3,在循环中判断时,数值判断使用恒等要比等于高效
$a=2;$b=2;
比如
if($a==$b)$c=$a;

if($a===$b)$c=$a;
高效

4,mysql 查询时尽量使用where in 少用 limit
limit查多记录的前几条, 速度很快, 但是查询最面几条就会慢
使用in .在查询连续性记录,非常快, 非连续性记录第一次运行会稍微慢一点,但是之后将比较快!

5,NT服务器数据操作稳定性不及unix/linux

6,输出前使用尽量使用 ob_start(); 可以加快输出速度,适用NT或nuli/linux,对unlix类服务器 如果使用 ob_start('ob_gzhandler');输出效率将更高

7,判断的时候尽量使用if($a==他的值) 否定的时候尽量使用if(empty($a)),因为这样程序运行更快速

8,使用不等时 != 与 <> 效率相当

9,个人经验得 使用 $a="11111111111111"; 的效率和 $a='11111111111111'; 相当.并不象书本说的相差很大

10,使用规范的SQL语句, 会有利于MySQL的解析

11,使用

if($online){
$online1=$online;
setcookie('online1',$online,$cookietime,$ckpath,$ckdomain,$secure);
}

 

COOKIE将马上生效
使用

if($online)
setcookie('online1',$online,$cookietime,$ckpath,$ckdomain,$secure);

 

COOKIE需要再刷新一次才能生效

12,使用

$handle=fopen($filename,wb);
flock($handle,LOCK_SH);
$filedata=fread($handle,filesize($filename));
fclose($handle);

file($filename);

无论在速度还是稳定上都要优秀

13,截断字符串优化函数(可避免?字符出现)

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);

14,程序中屏蔽大小写

for ($asc=65;$asc<=90;$asc++)
{ //strtolower() 此函数在一些服务器会产生乱码!
  if (strrpos($regname,chr($asc))!==false)
  {
  $error="为了避免用户名混乱,用户名中禁止使用大写字母,请使用小写字母";
  $reg_check=0;
  }
}

 

15,不使用 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<ofstar:>",$filedata);
  $filedb=explode("<ofstar:>",$filedata);
  //array_pop($filedb);
  $count=count($filedb);
  if($filedb[$count-1]==''){unset($filedb[$count-1]);}
  return $filedb;
}
//这个函数虽然代码比较多,不过在速度和稳定性上优势很大!

 

先写到这
以上完全个人的一点小结,,不过正确性都经过反复测试,如果有朋友质疑,请先测试,再讨论,谢谢!

PHP 相关文章推荐
PHP 解决utf-8和gb2312编码转换问题
Mar 18 PHP
php 函数使用方法与函数定义方法
May 09 PHP
linux下为php添加curl扩展的方法
Jul 29 PHP
在Debian系统下配置LNMP的教程
Jul 09 PHP
PHP实现生成唯一会员卡号
Aug 24 PHP
PHP模板引擎Smarty内置变量调解器用法详解
Apr 11 PHP
PHP面向对象程序设计组合模式与装饰模式详解
Dec 02 PHP
Yii框架弹出框功能示例
Jan 07 PHP
微信公众号开发之通过接口删除菜单
Feb 20 PHP
Laravel学习教程之路由模块
Aug 18 PHP
php连接MSsql server的五种方法总结
Mar 04 PHP
php curl发送请求实例方法
Aug 01 PHP
PHP数据库开发知多少
Oct 09 #PHP
一次编写,随处运行
Oct 09 #PHP
PHPShop存在多个安全漏洞
Oct 09 #PHP
配置最新的PHP加MYSQL服务器
Oct 09 #PHP
xml+php动态载入与分页
Oct 09 #PHP
十天学会php之第七天
Oct 09 #PHP
十天学会php之第九天
Oct 09 #PHP
You might like
Laravel框架查询构造器 CURD操作示例
2019/09/04 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
基于jQuery架构javascript基础体系
2011/01/01 Javascript
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
dojo随手记 gird组件引用
2011/02/24 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
AngularJS之自定义服务详解(factory、service、provider)
2017/04/14 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
Python中防止sql注入的方法详解
2017/02/25 Python
Python enumerate索引迭代代码解析
2018/01/19 Python
python 中的列表生成式、生成器表达式、模块导入
2019/06/19 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
python else语句在循环中的运用详解
2020/07/06 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
产品质量承诺书范文
2014/03/27 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
二手房购房意向书
2015/05/09 职场文书
python 中yaml文件用法大全
2021/07/04 Python