
PHP开发
leonzhang2008
good coders are lazy。
选择,坚持。
展开
-
PHP常用正则表达式收集
匹配中文字符的正则表达式: [u4e00-u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了匹配双字节字符(包括汉字在内):[^x00-xff]评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)匹配空白行的正则表达式: s* 评注:可以用来删除空白行匹配HTML标记的正则表达式:]*>.*?|评注:网上流传的版本太糟糕,上原创 2008-08-03 00:35:00 · 400 阅读 · 0 评论 -
PHP中进程间共享变量 shmop
类似于 asp中的 application 实现多用户的缓存共享进程间共享变量 用户在一个Web应用程序中导航时,如果能在Web服务器上存储用户或会话的特定数据,从而每次请求网页时能很容易地访问这些数据,将非常有用。存储的可以是有关用户、用户首选项的信息,或者是与应用程序相关的数据,如购物车中的数据。用户每次请求包含session_start()转载 2010-03-22 16:45:00 · 7746 阅读 · 0 评论 -
Facebook性能大提升的秘密:HipHop
Facebook神秘的PHP项目HipHop for PHP终于揭开面纱。这个项目由一个PHP到C++的转换程序,一个重新实现的PHP运行库,和许多常用PHP扩展的重写版本构成,目的是旨在加速和优化PHP。用Facebook官方博客(无法直接访问)上项目负责人赵海平(北大1987届遗传与分子生物专业,普林斯顿计算机科学博士)的话说,HipHop项目对Facebook转载 2010-04-30 09:28:00 · 501 阅读 · 0 评论 -
PHP数组指定位置插入单元
<br />这个功能需求来自于网站运营策略,举倒子:<br />在一个排行列表中,默认有以下元素,顺序有一定的依据,假设是按下载次数排列。<br /><br />$rows = array(<br /> array('name'=>'QQ2010'),<br /> array('name'=>'QQ2009'),<br /> array('name'=>'迅雷5'),<br /> array('name'=>'飞信2010'),<br /> array('name'=>转载 2010-11-26 15:27:00 · 8705 阅读 · 0 评论 -
php类中的各变量返回方法的效率比较
最近在优化一个项目时,发现代码中很多的变量返回是通过类静态方法返回的,感觉这样效率应该会比较低,所以今天做了一个测试。代码如下:function microtime_float(){ list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec);}class a{ public static $a='a'; const B='b'; p原创 2010-11-29 09:49:00 · 1324 阅读 · 0 评论 -
XHProf安装使用笔记
<br />最近公司web服务器老是耗费大量CPU,上面安排我协助搞运维的同事查问题,查了配置,反向代理服务器等外围环境没发现什么大问题,接下来只有查程序了。但程序怎么查呢?不能一句句读代码吧,那样不可靠也不科学,所以必须要有工具对应用程序进行测试(我们的应用是PHP开发的),百度了一下(原谅哥的不专业)发现了XHProf这么个东西,是Facebook开源的一个PHP性能检测程序,大致看了一下,很棒,里面有很多直观的数据来说明问题,比如调用次数、执行时间、内存使用、CPU占用等。有了这个东西,报转载 2010-11-30 11:34:00 · 879 阅读 · 0 评论 -
优化 PHP 代码的 40 条建议
<br />1.如果一个方法可静态化,就对它做静态声明。速率可提升至 4 倍。<br />2.echo 比 print 快。<br />3.使用 echo 的多重参数(译注:指用逗号而不是句点)代替字符串连接。<br />4.在执行 for 循环之前确定最大循环数,不要每循环一次都计算最大值。<br />5.注销那些不用的变量尤其是大数组,以便释放内存。<br />6.尽量避免使用 __get,__set,__autoload。<br />7.require_once() 代价昂贵。<br />8.在包含文转载 2010-11-17 16:07:00 · 412 阅读 · 0 评论 -
PHP中strtr()和str_replace()的区别
<br />转:<br />strtr和str_replace同样都是字符替换函数,以前没怎么用过strtr,今天看到一些朋友在BBS里问strtr和str_replace的区别,有些人说是效率不同,但鄙人感觉如果只是效率不同的话,那么就没有必要让那个效率低的函数存在了,他们到底是哪里有区别呢?<br />鄙人亲自实验了一把来验证他们的不同:<br />strtr:他的效率确实是比str_replace快,而且好象还是4到5倍呢,他的作用与其说是字符替换,还不如说是字符串改写。<br />他有3个参转载 2010-11-22 12:12:00 · 2242 阅读 · 1 评论 -
榨干 PHP,不得不转的一篇PHP使用技巧!
<br />这篇杂文翻译整理自网络各路文档资料(见最末的参考资料),尤其是 Ilia Alshanetsky (佩服之至) 在多个 PHP 会议上的演讲,主要是各类提高 PHP 性能的技巧。为求精准,很多部分都有详细的效率数据,以及对应的版本等等。偷懒,数据就不一一给出了,直接给结论,如果需要看原文档,请到文末「参考资料」部分。橙色标题为推荐部分。<br /><br />========================================================<br转载 2010-11-26 17:14:00 · 735 阅读 · 0 评论 -
php连接memcahed出现Cannot assign requested address (99)的解决方法
今天在将服务器合并后,发现php偶尔会报出 Server *.*.*.* (tcp *****) failed with: Cannot assign requested address (99) 的错误,开始怀疑是由于memcached服务器无法处理过多的请求,查看memcached服务器并未发现异常。在网上查到了问题的分析和解决方法。问题分析:客户端频繁的连服务器,由于每次原创 2012-08-29 14:46:42 · 4545 阅读 · 0 评论 -
ZF 编码规范速查笔记
1 只含有php代码的文件不允许存在 ?>结束符2 缩进禁用tab,用四个空格3 行推荐在120内,最好80.行结束用unix标志4 类名与目录对应,变/为_.类名单词首字母大写.5 函数和变量用驼峰式命名,首字母小写,单词大写.命名不允许_. ”private” 或 “protected” 变量或函数方法必须以_开头.6 常量所有字母大写.7 实例或静态变量的访问器总是转载 2012-08-16 20:41:42 · 1063 阅读 · 0 评论 -
PHP相关缓存技术
一、PHP脚本缓存1、 APCAlternative Php Cache(APC)是 php 的一个免费公开的优化代码缓存。它用来提供免费,公开并且强健的架构来缓存和优化 php 的中间代码。apc的用法比较简单,只有几个函数,列举如下(1)apc_clear_cache() 清除apc缓存内容默认(无参数)时,只清除系统缓存,要清除用户缓存,需用’user’参数(2)a转载 2012-08-21 19:41:31 · 730 阅读 · 0 评论 -
使用strace命令查看php进程信息
strace命令用法 调用: strace [ -dffhiqrtttTvxx ] [ -acolumn ] [ -eexpr ] ... [ -ofile ] [ -ppid ] ... [ -sstrsize ] [ -uusername ] [ command [ arg ... ] ] strace -c [ -eexpr ] ... [ -Ooverhead ] [原创 2012-08-24 14:17:12 · 7297 阅读 · 0 评论 -
php中使用memcached来存储session
Sessions支持memcached提供了一个自定义的session处理器可以被用于存储用户session数据到memcached服务端。一个完全独立的memcached实例将会在内部使用,因此如果需要您可以设置一个不同的服务器池。session的key被存储在前缀memc.sess.key.之下,因此, 如果你对session和通常的缓存使用了同样的服务器池,请注意这一点。译注:另外一个s原创 2012-08-28 17:25:39 · 3685 阅读 · 0 评论 -
Memcache键值key的命名规则
今天在做一个mysql查询结果返回时,发现用查询的sql语句做memcache的key有问题,后来想了下有可能是因为key中不能包含空格吧,在网上查了一下,果然如此。所以用正则转换了一下key的内容,另外别忘了key有长度限制,最多250个字符。代码如下:$key = preg_replace('/\s+/','',$key);附memcahce关于key的说明Keys原创 2012-12-15 12:39:39 · 6899 阅读 · 0 评论 -
一些被忽视的 PHP 函数(整理)
真的是不用不知道,其实我们熟悉的 PHP 还有很多好东西没有发掘。看到这篇文章,当时就泪奔了好几回,重点推荐下,顺便我自己也做个整理。sys_getloadavg()这个函数返回当前系统的负载均值信息(当然 Windows 下不适用),详细文档可以翻阅 PHP 的相关文档。文档中有段示例代码,基本上也就能看出它的用途了。$load = sys_getloadav转载 2010-03-16 14:08:00 · 667 阅读 · 0 评论 -
Php Xml解析之DOMDocument使用方法
这里也只说一下如何使用PHP DOMDocument解析XML文件。 代码如下:PHP XML处理XML代码xml version="1.0" encoding="utf-8"?> phplamp> post> title id="1">转载 2009-12-30 17:59:00 · 8251 阅读 · 1 评论 -
确保php应用程序的安全-不能违反的四条安全规则
规则 1:绝不要信任外部数据或输入关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据。外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据。在采取措施确保安全之前,来自任何其他来源(比如 GET 变量、表单 POST、数据库、配置文件、会话变量或 cookie)的任何数据都是不可信任的。例如,下面的数据元素可以被认为是安全的,转载 2008-08-03 00:34:00 · 448 阅读 · 0 评论 -
smarty 比较操作符
eq相等,ne、neq不相等,gt大于,lt小于,gte、ge大于等于,lte、le 小于等于,not非, mod求模。is [not] div by是否能被某数整除,,B z M E m I w0 is [not] even是否为偶数,$a is [not] even by $b即($a / $b) % 2 == 0,is [not] odd是否为奇,P$a is not odd by $b即(原创 2009-01-21 17:15:00 · 1216 阅读 · 0 评论 -
PHP APC扩展模块实现大文件上传
上周需要完成PHP大文件的上传,并且还要带AJAX进度条,于是在网上搜了下,决定使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc)。一. APC模块的安装与配置我的环境是Windows,需要去下载php_apc. dll文件,并把php_apc.dll放到php/ext中,并在php.ini中添加转载 2009-06-02 11:27:00 · 749 阅读 · 0 评论 -
在 PHP 中使用命令行工具 在 Web 应用程序中运行 shell 命令
学习如何更好地集成脚本和命令行工具。本文考察如何使用 shell_exec()、exec()、passthru() 和 system();安全地将信息传递到命令行;以及安全地从命令行获取信息。如果您使用过 PHP,您就会发现它是创建特性丰富的 Web 页面的出色工具。作为一大脚本语言,PHP:容易学习。有许多强大的框架(比如 CakePHP 和 CodeIg转载 2009-09-08 19:26:00 · 1039 阅读 · 0 评论 -
php include_path设置
一般情况下,我们设置php的include_path都会通过修改php.ini来实现。有时候,我们没有服务器的权限。有时候,我们把一个目录加到include_path会让已有的程序冲突。受cakephp的启发:在app/webroot目录下index.php有如下代码ini_set(include_path, CAKE_CORE_INCLUDE_PATH . PATH_SEPA转载 2009-10-23 10:11:00 · 4246 阅读 · 2 评论 -
PHP编码规范
注:这是从PHPCMS开发文档里看到编码规范,虽名为PHPCMS的开发规范,但我觉得所有的PHP编程都该如此。写了那么多PHP,很多编码对照这规范都感觉欠缺很多,今后一定要对照纠正。Phpcms 编码规范1. 引言…. 22. 适用范围…. 23. 标准化的重要性和好处…. 34. PHP编码规范与原则…. 34.1. 代码标记… 34.2. 注释… 34.3转载 2009-11-03 11:51:00 · 831 阅读 · 0 评论 -
PHP超全局变量之$_SERVER的详细用法
$_SERVER[PHP_SELF] #当前正在执行脚本的文件名,与 document root相关。$_SERVER[argv] #传递给该脚本的参数。 $_SERVER[argc] #包含传递给程序的命令行参数的个数(如果运行在命令行模式)。 $_SERVER[GATEWAY_INTERFACE] #服务器使用的 CGI 规范的版本。例如,“CGI/1.1转载 2009-11-03 14:29:00 · 803 阅读 · 1 评论 -
PHP header() examples -完整代码
//用这个header指令来解决URL重写产生的404 header header(HTTP/1.1 200 OK); // 页面没找到 header(HTTP/1.1 404 Not Found); // 访问受限 header(HTTP/1.1 403 Forbidden)原创 2009-11-12 09:47:00 · 496 阅读 · 0 评论 -
PHP5.3新特性之命名空间
PHP5.3新特新之命名空间详细说明。命名空间(Namespaces)* PHP5.3最大的新功能* 完全支持名字空间特征* 大部分的功能的执行在编译时* 简化命名惯例1) 更清晰的代码不使用 Namespacesfunction MY_wrapper() {}class MY_DB {}define(MY_COMM_STR,转载 2009-11-11 14:40:00 · 1207 阅读 · 0 评论 -
PHP5.3新特性之改进的性能
PHP5.3新特新之改进的性能。 改进的性能* md5() 速度提高了大概10-15%* 引擎中更好的堆栈实现* 常量移到只读内存区* 改进Exception处理(更简单 & 更少的代码)* 调用 (require/include)_once 去掉了使用open(2)(linux下的c函数)* 使用gcc4编译的二进制更小更快整体性能提高 5-15%转载 2009-11-11 14:42:00 · 375 阅读 · 0 评论 -
PHP5.3新特性之语言特性
PHP5.3新特新之语言特性 新的语言特性1) __DIR__* 引入 __DIR__ magic常量 定位脚本的目录echo dirname(__FILE__); // /* vs */ echo __DIR__; // >= 5.32) ?: 操作符* 允许从2个值的or/and表达式快速的获取一个非空的值转载 2009-11-11 14:42:00 · 481 阅读 · 0 评论 -
谈PHP5.3闭包特性在实际应用中的问题
PHP5.3 新版本跟随了很多新特性,其中比较惹眼的特性之一就是支持了闭包。那么以后,我们也可以和那帮写 Ruby、Javascript 等等“高科技语言”的家伙们一样,写出非常酷的代码吗?呃,其实大部分情况下是可以的,而有些方面还是令人非常的困扰,下面慢慢道来。很多语言的都提供了非常优雅和漂亮的操作数组的方法。在下面的例子中,会使用 PH转载 2009-11-11 14:46:00 · 546 阅读 · 0 评论 -
用php gettext库来开发多语言系统
通常人们写程序时都是将文字写死在程序里的,比如:echo "HelloWorld!";,假如要改成它国语言,写国际化程序,就要逐个打开进行修改,程序较短时还行,若程序有上万甚至更多,改起来就不是那么容易了。近来随着i18n的逐渐标准化,我也来讲一讲在PHP中如何实现国际化支持。跟其他程序语言一样,在 PHP 也可以利用 gettext 套件写作 i18n 程序,实现NLS(Na转载 2010-01-20 15:32:00 · 866 阅读 · 0 评论 -
出现“Warning: Call-time pass-by-reference has been deprecated”怎么办?
我看见今天有一篇文章被发布到知识库中,如下: Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function转载 2010-01-22 10:31:00 · 3802 阅读 · 1 评论 -
PHP 序列化(serialize)格式详解
PHP 序列化(serialize)格式详解前言概述NULL 和标量类型的序列化简单复合类型的序列化嵌套复合类型的序列化自定义对象序列化Unicode 字符串的序列化参考文献1.前言PHP (从 PHP 3.05 开始)为保存对象提供了一组序列化和反序列化的函数:serialize、unserialize。不过在 PHP 手册中对这两个函转载 2010-02-26 13:35:00 · 947 阅读 · 0 评论 -
php生成随机的浮点数
今天在开发项目的一个刷将功能时,需要用到概率刷出高等级武将,由于概率相差很大,数值策划在填表时填写的都是非常小的浮点数,以前遇到概率问题时都是用mt_rand取一个范围的整数,当遇到概率差距很大时,也只是把随机数的上限位数加大,这样如果数值有调整的话,代码也需要调整,不利于程序扩展,并且会影响到随机的精度问题,数值同学建议是生成一个0-1之间的随机浮点数,想了一下php好像没有现成的函数可用,又查原创 2012-12-21 16:47:17 · 7591 阅读 · 0 评论