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 程序员也要学会使用“异常”
Jun 16 PHP
php面向对象全攻略 (十七) 自动加载类
Sep 30 PHP
rephactor 优秀的PHP的重构工具
Jun 09 PHP
php eval函数用法总结
Oct 31 PHP
解析strtr函数的效率问题
Jun 26 PHP
ThinkPHP3.1的Widget新用法
Jun 19 PHP
PHP中的替代语法简介
Aug 22 PHP
PHP与MYSQL中UTF8编码的中文排序实例
Oct 21 PHP
php实现json编码的方法
Jul 30 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
May 06 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
php如何实现数据库的备份和恢复
Nov 30 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
浅谈PHP表单提交(POST&amp;GET&amp;URL编/解码)
2017/04/03 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
Javascript 获取LI里的内容
2008/12/17 Javascript
为超链接加上disabled后的故事
2010/12/10 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
Bootstrap CSS组件之大屏幕展播
2016/12/17 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
HTML的select控件美化
2017/03/27 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
Vue项目添加动态浏览器头部title的方法
2018/07/11 Javascript
JavaScript字符串转数字的5种方法及遇到的坑
2018/07/16 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
Python删除空文件和空文件夹的方法
2015/07/14 Python
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
Python wxPython库使用wx.ListBox创建列表框示例
2018/09/03 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
Python tkinter常用操作代码实例
2020/01/03 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
python关于倒排列的知识点总结
2020/10/13 Python
python re模块常见用法例举
2021/03/01 Python
品恩科技软件测试面试题
2014/10/26 面试题
影视艺术学院毕业生自荐信
2013/11/13 职场文书
爱护草坪标语
2014/06/24 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python