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速度全攻略
Oct 09 PHP
在VS2008中编译MYSQL5.1.48的方法
Jul 03 PHP
PHP计划任务、定时执行任务的实现代码
Apr 23 PHP
php继承的一个应用
Sep 06 PHP
工厂模式在Zend Framework中应用介绍
Jul 10 PHP
关于PHP实现异步操作的研究
Feb 03 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
Nov 03 PHP
PHP实现文件下载详解
Nov 27 PHP
PHP中抽象类、接口的区别与选择分析
Mar 29 PHP
php 获取文件行数的方法总结
Oct 11 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
Apr 19 PHP
PHP微信发送推送消息乱码的解决方法
Feb 28 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.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
php使用curl获取https请求的方法
2015/02/11 PHP
php pdo操作数据库示例
2017/03/10 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
javascript 得到变量类型的函数
2010/05/19 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
jquery插件jquery.confirm弹出确认消息
2015/12/22 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
highcharts.js数据绑定方式代码实例
2019/11/13 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
vue-video-player 断点续播的实现
2021/02/01 Vue.js
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
python实现远程控制电脑
2019/05/23 Python
python 实现12bit灰度图像映射到8bit显示的方法
2019/07/08 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
python实现猜数游戏
2020/03/27 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
Python函数调用追踪实现代码
2020/11/27 Python
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
工商学院毕业生个人自我评价
2013/09/19 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
写给医护人员的一封感谢信
2019/09/16 职场文书
Spring Cloud OAuth2实现自定义token返回格式
2022/06/25 Java/Android