当前位置:  编程技术>php
本页文章导读:
    ▪PHP高效率写法(详解原因) - toeasy      1.尽量静态化:   如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍。   当然了,这个测试方法需要在十万级以上次执行,.........
    ▪php mysql 丢失更新 - 四提婚      php mysql 丢失更新问题,搜索整个互联网,很少有讲到,也许和php程序员出身一般都是非科班出身有关系吧。另外php程序一般都是简单数据,很少有并发一致性问题,所以大家都没有谁专门提.........
    ▪PHP获取与操作php.ini文件的几个函数示例 - snowfly123      php有一套设置和获取配置信息的函数,用于设置与修改相关参数信息。 1.ini_get()获取配置参数,ini_set()设置配置参数<?phpecho ini_get('display_errors'); //1//动态修改php.ini配置信息,脚.........

[1]PHP高效率写法(详解原因) - toeasy
    来源:    发布时间: 2013-11-07
1.尽量静态化:

   如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍。
   当然了,这个测试方法需要在十万级以上次执行,效果才明显。
   其实静态方法和非静态方法的效率主要区别在内存:静态方法在程序开始时生成内存,实例方法在程序运行中生成内存,所以静态方法可以直接调用,实例方法要先成生实例,通过实例调用方法,静态速度很快,但是多了会占内存。
  任何语言都是对内存和磁盘的操作,至于是否面向对象,只是软件层的问题,底层都是一样的,只是实现方法不同。静态内存是连续的,因为是在程序开始时就生成了,而实例申请的是离散的空间,所以当然没有静态方法快。
   静态方法始终调用同一块内存,其缺点就是不能自动进行销毁,而是实例化可以销毁。

2.echo的效率高于print,因为echo没有返回值,print返回一个整型;

  测试:
  Echo
  0.000929 - 0.001255 s (平均 0.001092 seconds)
  Print
  0.000980 - 0.001396 seconds (平均 0.001188 seconds)
  相差8%左右,总体上echo是比较快的。
  注意,echo大字符串的时候,如果没有做调整就严重影响性能。使用打开apached的mod_deflate进行压缩或者打开ob_start先将内容放进缓冲区。

3.在循环之前设置循环的最大次数,而非在在循环中;

    傻子都明白的道理。

4.销毁变量去释放内存,特别是大的数组;

  数组和对象在php特别占内存的,这个由于php的底层的zend引擎引起的,
  一般来说,PHP数组的内存利用率只有 1/10, 也就是说,一个在C语言里面100M 内存的数组,在PHP里面就要1G。
  特别是在PHP作为后台服务器的系统中,经常会出现内存耗费太大的问题。

5.避免使用像__get, __set, __autoload等魔术方法;

  对于__开头的函数就命名为魔术函数,此类函数都在特定的条件下初访的。总得来说,有下面几个魔术函数
  __construct(),__destruct(),__get(),__set(),__unset(),__call(),__callStatic(),__sleep(),__wakeup(),__toString(),__set_state(),__clone(),__autoload()

     其实,如果__autoload不能高效的将类名与实际的磁盘文件(注意,这里指实际的磁盘文件,而不仅仅是文件名)对应起来,系统将不得不做大量的文件是 否存在(需要在每个include path中包含的路径中去寻找)的判断,而判断文件是否存在需要做磁盘I/O操作,众所周知磁盘I/O操作的效率很低,因此这才是使得autoload机制效率降低的原因。

  因此,我们在系统设计时,需要定义一套清晰的将类名与实际磁盘文件映射的机制。这个规则越简单越明确,autoload机制的效率就越高。
  结论:autoload机制并不是天然的效率低下,只有滥用autoload,设计不好的自动装载函数才会导致其效率的降低.

    
[2]php mysql 丢失更新 - 四提婚
    来源:    发布时间: 2013-11-07

php mysql 丢失更新问题,搜索整个互联网,很少有讲到,也许和php程序员出身一般都是非科班出身有关系吧。

另外php程序一般都是简单数据,很少有并发一致性问题,所以大家都没有谁专门提出这个问题。

 

这个问题无法依靠数据库的并发机制进行控制,因为不是一回事。

丢失更新:(Lost Update) 
事务T1读取了数据,并执行了一些操作,然后更新数据。事务T2也做相同的事,则T1和T2更新数据时可能会覆盖对方的更新,从而引起错误。

这里的事务不是指的数据库事务。

可以理解成两个不同的客户端。

 

举例:

在时间T1

 

PC机1 客户读到一条 message      | pc机2 客户读到同一个message

修改                            | 修改

时间t2

保存                          时间t3

                            | 保存

=========================

 

请问这个时候数据库里面应该以谁保存的为准?

=============================

这个问题,只出现在多用户环境,并且多用户修改一个数据库记录。

解决这个问题有两种方式:

方法1, 简单数据,直接用 where 语句,加自己读到的old 数据作为条件,防止其他用户更新了

自己覆盖其更新。

 

方法2是,复杂数据,用一个integer ,或者longint字段version,控制版本。

每次更新的时候,执行:

update table1 set version=version+1 where version=修改前的version

 

 控制了这个问题,会可能导致后更新的用户操作失败。

处理方式有两种:

直接刷新出最新记录。

提示用户更新失败,手动刷新最新记录。

 

 

 

 

 

 


本文链接:http://www.cnblogs.com/stevenlaz/p/3272790.html,转载请注明。


    
[3]PHP获取与操作php.ini文件的几个函数示例 - snowfly123
    来源:    发布时间: 2013-11-07
php有一套设置和获取配置信息的函数,用于设置与修改相关参数信息。
 
1.ini_get()获取配置参数,ini_set()设置配置参数
<?php
echo ini_get('display_errors'); //1
//动态修改php.ini配置信息,脚本执行后失效
ini_set('display_errors',0);
echo ini_get('display_errors');//0
2.ini_get_all()获取所有配置信息
<?php
//打印所有配置信息
print_r(ini_get_all());
3.ini_restore()恢复配置信息到原始值
<?php
echo ini_get('display_errors'); //1
//动态修改php.ini配置信息,脚本执行后失效
ini_set('display_errors',0);
ini_restore('display_errors');
echo ini_get('display_errors');//1
//来源: http://www.

本文链接:http://www.cnblogs.com/linuxnotes/p/3274069.html,转载请注明。


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
互联网 iis7站长之家
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3