PHP开发
RichardXu
永不放弃 耕者生存
展开
-
堆管理算法中的Buddy System(伙伴系统)算法
堆管理算法Buddy SystemBitmapZend引擎原创 2015-01-11 00:57:56 · 3425 阅读 · 1 评论 -
PHP官方建议我们不要使用Worker模式下的Apache2来运行PHP
PHP只是一个粘合剂。他将众多的第三方模块儿库粘结到一起,然后提供给使用者一个直观易懂的统一语言接口,让我们觉得他们就是一个整体。PHP的易用和强大要依赖于一个稳定和强大的运行平台。他需要操作系统,Web服务器和第三方模块儿库融合到一起。他们当中任何一个挂了,PHP都需要通过各种途径迅速找到问题,并解决。如果我们使用一种没有完全隔离运行线程,没有完全隔离内存空间,并且没有一个强大的记录每个需求的容原创 2011-06-17 11:07:00 · 3942 阅读 · 0 评论 -
自己动手,使用PHP的SOCKET来伪造POST数据
从昨天早上起床忙到今天凌晨,终于把这段程序完成了。具体程序如下: /** * 模拟POST方式向服务器发送数据 * * @param string $url 服务器地址 * @param array $data 数据 * */ function Send_Post($url,$rawdata){ //初始化变量 $header = ""; $data = ""; //分析$url $url = parse_url(原创 2011-05-14 01:38:00 · 2748 阅读 · 0 评论 -
PHP的cURL库简单和有效地抓网页
<br />使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,cURL 是一个功能强大的PHP库。本文主要讲述如果使用这个PHP库。<br /> <br />启用 cURL 设置<br /> <br />首先,我们得先要确定我们的PHP是否开启了这个库,你可以通过使用php_info()函数来得到这一信息。<br />转载 2010-12-10 13:09:00 · 748 阅读 · 0 评论 -
php smarty模版引擎中变量操作符及使用方法
<br />smarty常用的20个变量操作符 * 使用语法:{变量名|操作符:} <br />* capitalize ---首字母大写 <br />* count_characters ---计算字符数 <br />* cat ---连接字符串 <br />* count_paragraphs ---计算段落数 <br />* count_sentences ---计算句数 <br />* count_words ---计算词数 <br />* date_format ---时间格式 <br />* d转载 2010-12-10 12:58:00 · 1053 阅读 · 0 评论 -
php代码效率测试
<br />PHP代码<br />$GLOBALS['_start_time_'] = array_sum(explode(' ', microtime())); <br />/** <br />* 调试使用情况 <br />*/ <br />function debug_using() <br />{ <br />echo '执行时间:'.(array_sum(explode(' ', microtime()))-$GLOBALS['_start_time_']).' 秒.<转载 2010-12-05 17:14:00 · 1208 阅读 · 0 评论 -
检查PHP脚本的执行效率(xdebug)
<br />xdebug是一个开源的php调试器,以php模块的形式加载并被使用。 <br />windows 平台下: <br />一、安装xdebug模块 <br />1、去www.xdebug.org下载相应版本php的模块文件,保存下载后的文件到php的ext目录,可以自己修改文件的名称,现在最新的版本是 2.0.1。 <br />2、修改php.ini,增加如下信息 <br />[Xdebug] <br />zend_extension_ts="d:/php/ext/xdebug-xxx.dll"转载 2010-12-05 16:53:00 · 1560 阅读 · 0 评论 -
php获取文件扩展名多种方法
<br /><?php function getExtensionName($filePath){ $num=strrpos($filePath,'.'); $len=strlen($filePath); $extension=substr($filePath,$num+1,$len-$num); // return $len; return $extension;转载 2010-11-29 21:06:00 · 706 阅读 · 0 评论 -
JSON数据格式
<br />今天用JQuery实现AJAX,返回的JSON数据格式总是报错,最后发现返回JSON的格式错误。呵呵。列出一下内容备忘。<br />JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似转载 2010-11-29 20:44:00 · 737 阅读 · 0 评论 -
万恶的OpenSSL 0.9.8h
curl: (35) error:140773F2:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert unexpected message以上错误是系统装了OpenSSL 0.9.8h,而你去访问 sslv3 的数据时产生的。产生原因是 这个版本的不能自动检测出ssl版本,使用时必须手工指定。低版本则不需要指定。如果使用shell脚本 需要 这转载 2011-06-27 15:39:00 · 2472 阅读 · 0 评论 -
PHP源代码分析:Zend HashTable详解
在PHP的Zend引擎中,有一个数据结构非常重要,它无处不在,是PHP数据存储的核心,各种常量、变量、函数、类、对象等都用它来组织,这个数据结构就是HashTable。HashTable在通常的数据结构教材中也称作散列表,哈希表。其基本原理比较简单(如果你对其不熟悉,请查阅随转载 2011-09-03 00:13:36 · 1949 阅读 · 0 评论 -
PHP中用下标符号[]去读取字符串的逻辑
PHP数组下标访问字符串原创 2014-09-30 11:41:41 · 9744 阅读 · 0 评论 -
基于ZF中的.htaccess文件学习Apache的Rewrite语法
ApacheRewriteZF原创 2014-05-05 23:42:08 · 2570 阅读 · 0 评论 -
PHP中的 empty() 函数和 isset() 函数
PHPissetempty原创 2014-05-05 17:42:34 · 1525 阅读 · 0 评论 -
PHP中include和require区别之我见
昨天去面试一个php开发,看到笔试试卷上有这么一道题目:include和require有什么区别?这个题目可以称得上php开发面试中的必考题目,网上也有各种答案和解释。但是我当时却真的想不起来了。现在回头想这个问题,突然有了新的认识:PHP作为优秀的开源程序,她所提供的函数从名称上必定会尽可能地表达出这个函数的作用。那么理解这两个函数的区别就容易多了。require 的英文意思原创 2014-01-10 08:56:28 · 5045 阅读 · 6 评论 -
PHP中json_encode返回null的原因
今天的工作中遇到了一个问题,将excel里面读出来的数据进行json_encode,然后返回客户端的时候,返回的总是 null。搞到最后,仔细看了看文档,才明白过来,json_encode处理的数据必须是UTF-8编码的,如果不是,那一部分数据就会返回null.原创 2013-12-18 17:34:41 · 6165 阅读 · 3 评论 -
Using Look-ahead and Look-behind
If you are familiar with Perl's regular expressions, you are probably already familiar with zero-width assertions: the^ indicating the beginning of string and the\b indicating a word boundary are转载 2012-12-24 17:19:39 · 1445 阅读 · 0 评论 -
mysql kill process解决死锁问题,停用某条正在执行的语句
在使用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映。这个时候,就需要kill掉某个正在消耗资源的query即可。使用:1show processlist;显示出当前正在执行的sql语句列表,找到消耗资源最大的那条语句对应的id.运行1kill id;杀掉即转载 2012-08-14 12:30:43 · 3109 阅读 · 0 评论 -
加锁解锁PHP实现
PHP并没有完善的线程支持,甚至部署到基于线程模型的httpd服务器都会产生一些问题,但即使是多进程模型下的PHP,也难免出现多进程共同访问同一资源的情况。比如整个程序共享的数据缓存,或者因为资源受限而必须对特定处理过程进行排队,以及针对每个用户生成唯一的某种标识的情形。PHP语转载 2011-08-31 11:30:13 · 7925 阅读 · 0 评论 -
深入理解PHP之源码目录结构
<br /> PHP之所以能在web开发语言中排名靠前,不仅仅是因为语法简单,上手容易。我个人认为更多是因为其语言本身的:模块的易扩展性,可维护性以及内存安全管理等特点。写过PHP的程序员不一定都知道:PHP是如何执行的?其组织结构目录的作用?如果对其有所了解,对PHP的认识会更深入,写出的代码也会更高效,更健壮...... <br /> 1. build 和编译有关的目录。<br /> 2. ext 扩展库代码,例如 mysql、zlib、iconv 等我们熟悉的扩展库。其中/ext/s转载 2010-10-02 15:44:00 · 1037 阅读 · 0 评论 -
PHP文档中怎样自动生成版本信息
<br />在查看一些PHP源码的时候,经常可以看到一些非常标准的注释信息<br />$Id: Database.php 4343 2009-05-08 17:04:48Z jheathco $<br />这个信息里包括了文件名,SVN版本,提交日期,作者,那么这个信息是如何生成的呢,今天终于发现了,原来是SVN提供的一个auto-props的功能。<br /><br />在我们使用的Zend Studio 6.1.2中,从SVN检出的项目,单击右键,选择 Team->set keyword,然后选择ID,原创 2010-10-01 19:54:00 · 1520 阅读 · 0 评论 -
简单明了说明MVC架构的一张图
<br />原创 2010-10-01 12:06:00 · 1124 阅读 · 0 评论 -
UCHome中上传大图片没有提示或提示无法获取图片大小的解决方案
如果是提示无法获取图片大小,问题出在服务器不支持GD;如果是上传了以后也不提示成功,也不提示任何错误,问题出在服务器的配置上,memory_limit的值太小了原创 2010-08-24 11:26:00 · 1116 阅读 · 0 评论 -
刚刚写的一个批量重命名的一个脚本
<br />HDWiki的数据还原功能有问题,无论点击那个备份文件,他都是从第一个文件开始还原。但总是到第211个文件的时候,出错。我起初以为是一次还原的太多,就想着把300个备份文件分成3份儿。这样的话,第201个,就必须重命名为第1个,才能连着往下还原。所以写了一个简单的脚本来帮我做这件事情:<br /> $dir = dirname(__FILE__)."/db3"; $handle = opendir($dir); while (false !== ($file = readdir($han原创 2010-08-18 14:39:00 · 1248 阅读 · 0 评论 -
程序页面读取权限验证的一个小技巧
<br />今天看HDWiki的源代码,发现所有核心代码的头部都有这么一行:<br />!defined("IN_HDWIKI") && exit("Access Denied!");<br />感觉很奇怪,一般应该写为:<br />if(!defined("IN_HDWIKI")){ exit("Access Denied!");}<br />才对。难道&&操作符也有判断的意思吗?<br />带着这个问题,我开始测试,当我把exit("Access Denied!") 和 !defined("I原创 2010-08-17 14:35:00 · 1146 阅读 · 0 评论 -
PHP中set_time_limit和memory_limit作用小测试
测试代码如下: set_time_limit(1); for ($index = 0; $index "; }测试结果:486206486207486208Fatal error: Maximum execution time of 1 second exceeded in E:/Server/localhost/test/1.php on line 4说明循环到 486209 的时候,脚本已经运行超过1秒,所以提示超时原创 2010-08-18 13:10:00 · 6236 阅读 · 0 评论 -
关于uchome登陆退出超级慢的终极解决办法
<br />解决办法:<br /> 经排查发现,网站更换空间后留下了一些缓存通讯文件造成的!<br /> 1)进入UCenter后台,数据列表-通知列表 底下的文件全部清空<br /> 2)检查UCenter底下的各应用列表的配置情况,查看下应用的ip是否错误(一般留空也行)<br /> 3)ucenter底下各应用列表的“应用的 UCenter 配置信息”分别复制到各个应用的config中去。<br /> 4)最后要做的就是更新ucenter和各个应用的缓存文原创 2010-06-22 10:53:00 · 1028 阅读 · 0 评论 -
PHP在UTF-8编码下等宽截取所有文字的函数
以前写的一个PHP在UTF-8编码下等宽截取所有文字的函数,今天贴出来,分享一下 224){ if($j原创 2010-06-08 16:49:00 · 1225 阅读 · 0 评论 -
用vim转换M$文本中的换行符^M
<br />在 Dos/Windows 里,文本文件的换行符为 /r/n ,而在*nix系统里则为/n,所以 DOS/Windows 里编辑过的文本文件到了 *nix 里,每一行都多了个 ^M 。删掉该字符可以在 VI 里用下面的方法试试<br />1、 :% s//r//g<br />2、 :% s/^M//g<br />注意 ^M 的输入用 Ctrl+v,再按回车,或者是 Ctrl+v, Ctrl+m。<br />ps:我的情况是,从网络上下载的某些源代码,如java的代码,用vim打开,就会出现许多的转载 2010-06-08 15:39:00 · 3339 阅读 · 0 评论 -
BOM–字节序标记
<br />读代码的时候看到这样一段<br />$template_content = str_replace(”/xEF/xBB/xBF”, ”, $template_content);<br />不知道是何作用,经过一番查找资料,终于解开了这个疑问<br />资料如下:<br />在window下面用记事本编辑文件的时候,如果保存为UNICODE或UTF-8,分别会在文件的开头加上两个字节“/xFF/xFE”和三个字节“/xEF/xBB/xBF”。在读取的时候就可能会遇到问题,但是不同的环境对这几个多于转载 2010-06-08 15:35:00 · 2380 阅读 · 0 评论 -
PHP中返回值为“泛布尔”类型数据的函数
所谓“泛false”,就是一切相当于false的值,比如"" 、0等等。更重要的特点是,验证“泛flase”型的时候必须用到“泛比较”操作符:!==。为了便于以后开发的效率更高,在此,将所有返回“泛型”的函数总结一下:readdir()strpos()原创 2010-09-14 22:04:00 · 2295 阅读 · 0 评论 -
method_exists函数
<br />method_exists ( mixed$object , string$method_name ) — Checks if the class method exists<br />确认$object类中是否存在$method_name的方法。如果存在返回TRUE;如果不存在返回FALSE.转载 2010-09-14 22:38:00 · 4575 阅读 · 1 评论 -
关于PHP中数组遍历的总结
刚才在遍历PHP数组的时候想当然地这样写:$arr = array(1,2,3,4);for($i=0;$i运行一下是错误的,抛出了 $arr.lenth 得到的值是 Arraylength。我才恍然大悟,我在用PHP开发,不是JavaScript,呵呵在PHP中,如果相对数组中每个元素遍历操作一次,经常用的方法是foreach ( $array as $element){ .........}但是遍历的过程中是无法改变原数组的值的,比如foreach ($array as $el原创 2010-09-28 17:30:00 · 841 阅读 · 0 评论 -
PHP中Perl兼容类型的正则表达式相关函数总结
由于POSIX扩展类型的正则表达式函数自5.3版本时就被取消了,所以这里只总结Perl兼容类型的。1、preg_grep(string 正则表达式,array 输入数组[,int 标识])返回值类型:数组返回值:返回输入数组中符合正则表达式的部分补充说明:第三个参数如果被设置为PREG_GREP_INVERT,将返回不匹配指定正则表达式的值程序实例:从指定数组中提取出网易公司的邮箱:2、preg_match(string 正则表达式, string 输入字符串[, array 输出数组的引用[,int 标识原创 2010-09-28 11:16:00 · 1345 阅读 · 0 评论 -
PHP对象实例化时的重要特性
<br />为了测试PHP类在实例化为对象时,如果构造函数里的参数一样,是否不再重新生成对象,而是沿用原来的。我写了如下程序:<br /> class person{ var $name; var $sex; var $age; function person($name,$sex,$age){ $th原创 2010-09-26 16:30:00 · 1496 阅读 · 0 评论 -
PHP中mysql_connect()函数的鲜为人知的重要特性
这两天郁闷的经历促使我编写了一段下面这个变态的脚本:$a = mysql_connect("localhost","root","password");$b = mysql_connect("localhost","root","password");$c = mysql_connect("localhost","root","password");echo $a."/n";echo $b."/n";echo $c."/n";结果让我恍然大悟:Resource id #2Resour原创 2010-09-25 16:20:00 · 1536 阅读 · 2 评论 -
PHP内核开发编码标准——翻译自PHP5.2.13源代码中的CODING_STANDARDS文件
<br />PHP编码准则<br />========<br />本文件当中列出的这些标准是所有向PHP内核中添加代码或者修改PHP内核代码的所有程序员应该遵循的。因为这个文件是在PHP3.0版本开发的最近阶段被加进来的。虽然PHP3.0的代码没有完全实现这些标准,但是他一直遵循这个大方向。在我们即将推出的4.0版本中将会用这些标准重写部分代码。<br /> <br />代码实现<br />---------<br />[0]你的代码不仅要写在源文件中而且要在说明手册中添加相关说明。<br /> <br /翻译 2010-09-23 17:49:00 · 925 阅读 · 1 评论 -
总结PHP中返回各种类型的时间函数
一、返回字符串的函数:string date(string $format,[int timestamp]);二、返回整数时间戳的函数:int time(void); 返回当前时间的时间戳int strtotime(string $time,[int $now]); 以now为基数,将一个英文格式的时间转换为时间戳int mktime([ int$hour = date("H") [, int$minute = date("i") [, int$second = date("s") [, int$month原创 2010-09-17 15:59:00 · 1942 阅读 · 0 评论 -
Autoloading Classes(自动加载所需类)
<br />Many developers writing object-oriented applications create one PHP source file per-class definition. One of the biggest annoyances is having to write a long list of needed includes at the beginning of each script (one for each class). <br />In PHP 5翻译 2010-09-14 22:45:00 · 816 阅读 · 0 评论 -
PHP开发经验总结
<br />1、在使用函数处理一个变量之前,必须验证这个变量是否是处理他的函数所能接受的合法类型。比如:<br />$firstcommenddoc=is_array($commenddocs)?array_shift($commenddocs):array();原创 2010-09-16 09:35:00 · 735 阅读 · 0 评论