随笔分类 -  PHP

PHP 是我最拿手的编程语言,我很喜欢这种语言的灵活与精巧。
摘要:在大概两个月前,我设计了一个简单的多线程服务器。http://www.cnblogs.com/niniwzw/archive/2009/09/27/1575002.html最近,做了一个和表达式解析相关的东西,也就放到了这个服务器上去了,现在这个服务可以提供下面的功能:1. 任意大小的数的 加 减 乘 除 乘方 开方 运算。2. 可以用 ()构成一个任意的表达式。测试方法:新建一个文本文件,在文件... 阅读全文
posted @ 2009-11-26 14:04 暮夏 阅读(581) 评论(0) 推荐(1)
摘要:今天要找一个 php_memcache.dll 找了好久都没有找到,不小心在这里找到了。http://downloads.php.net/pierre/下面是所有的下载内容:libpq-php-4.4.9-5.2.6.zip (2008-08-09 04:11 -0700)MD5 (libpq-php-4.4.9-5.2.6.zip) = a38e3834a7beab7d65064797bc643... 阅读全文
posted @ 2009-11-24 22:07 暮夏 阅读(866) 评论(0) 推荐(0)
摘要:今天看了一个 PHP 进程锁定的文章,http://www.cnblogs.com/sunli/archive/2009/11/24/1609553.html刚好,前几天也写了一个 进程锁定的类,这个类要比上面的文章里面提到的更加强大一写。1. 区分读锁定 和 写 锁定。 如果每次都使用 写锁定,那么连多个进程读取一个文件也要排队,这样的效率肯定不行。2. 区分 阻塞 与 非 阻塞模式。 一般来说... 阅读全文
posted @ 2009-11-24 16:23 暮夏 阅读(2504) 评论(1) 推荐(0)
摘要:PHP的递归效率一般认为是低效的。大概一年前,我写了一篇博文,对三种遍历树的方法进行了比较,发现递归算法的效率最低。http://www.cnblogs.com/niniwzw/archive/2008/06/28/1231410.html而且是差了3倍的效率。所以,PHP中的递归一定要小心的对待。最近写了一个快速排序的算法,发现PHP中的递归效率不能一刀切,在各种不同的服务器中,可能会表现不一样... 阅读全文
posted @ 2009-11-24 13:41 暮夏 阅读(962) 评论(0) 推荐(0)
摘要:Memcache 一般用于缓存服务。但是很多时候,比如一个消息广播系统,需要一个消息队列。直接从数据库取消息,负载往往不行。如果将整个消息队列用一个key缓存到memcache里面,对于一个很大的消息队列,频繁进行进行大数据库的序列化 和 反序列化,有太耗费。下面是我用PHP 实现的一个消息队列,只需要在尾部插入一个数据,就操作尾部,不用操作整个消息队列进行读取,与操作。但是,这个消息队列不是线程... 阅读全文
posted @ 2009-11-17 15:43 暮夏 阅读(1635) 评论(0) 推荐(0)
摘要:今天在 百度 贴吧 看到了 一个 帖子,http://tieba.baidu.com/f?kz=658993613, 点击里面的图片就会进入自己的设定好的链接。貌似不太可能,因为百度只允许你填入一个图片链接,不允许图片自己加链接了。其实,通过PHP 判断一下是不是被图片引用,还是在查看就好了,代码如下:[代码]file.ini 这样配置:mysql.jpg http://dev.mysql.com... 阅读全文
posted @ 2009-10-24 00:01 暮夏 阅读(914) 评论(3) 推荐(0)
摘要:前一段时间,我的Zend studio 5.5 老是出问题,ctrl + F5 或者 按下 run 就会崩溃,而且系统日志里面也是什么都没有。我也不知道具体是上面原因,就换成了 zend studio for eclipse 6.0 ,后来又升级到 zend studio for eclipse 6.1.2 ,好家伙,这东西真不是人用的,真的是太慢了,特别是电脑东西开的比较多,严重影响写代码的效率... 阅读全文
posted @ 2009-10-13 17:58 暮夏 阅读(590) 评论(1) 推荐(0)
摘要:1. 介绍实际上 sphinx的网站上的title 说的很清楚,这个是一个 “免费开源的SQL 全文索引搜索引擎”。当然,它不是一个完整的搜索引擎,只提供索引 和 查询接口。所以,学习sphinx 主要是要学习:如何建立索引,如何调用查询接口。他的作者只有一个人,但是,功能的确非常强大。目前,支持下面的特性:n高速索引(10M/s, 主流cpu配置)n高速查询(2-4G 文... 阅读全文
posted @ 2009-10-13 17:13 暮夏 阅读(2404) 评论(5) 推荐(1)
摘要:要建立一个简单的服务,如果不考虑性能方面的问题,比如并发100 左右的服务,可以简单的用 Socket + Pcntl。来实现,我准备写一个系列的教程,让新手就能进行编写socket 服务。 下面要实现的是这样一个服务,就是能进行加减乘除的四则运算。数字可以是任意大的数。可以用下面的命令测试这个服务:telnet 122.224.124.251 8086就会进入下面的界面:Welcome to the PHP Test Server.To quit, type 'quit'.#输入quit 就可以退出。下面演示功能:输入: 11111111111111111111111 * 2 阅读全文
posted @ 2009-09-27 15:01 暮夏 阅读(6782) 评论(1) 推荐(3)
摘要:今天在解析一个中文的 XML时,始终报错 PCDATA invalid Char value 21 in Entity ,查询了一下这个 21 的ascii 值,发现是:000101012115NAK␕确认失败回应怎么会有这样奇怪的字符,我也搞不清楚。google 一下这个错误,发现很多网站都报这样的错误,就是没有一篇文章说明为什么出错了。折腾了半天,后来又看了Libxml的源代码,发... 阅读全文
posted @ 2009-09-24 18:41 暮夏 阅读(1817) 评论(0) 推荐(0)
摘要:PHP 中的文件锁定功能非常的不稳定。特别是和PHP 的版本 和 平台也有很大的关系。今天看了Zend_Search_Lucence 中的解决方案是这样的:先flock 一个文件,lock的模式是:flock($file, LOCK_EX | LOCK_NB)如果下一个进程再次访问 $file, 那么因为无法再获取 flock 的锁定了,所以会返回一个false代表文件被锁定了,不能再进行访问了。... 阅读全文
posted @ 2009-09-23 20:15 暮夏 阅读(384) 评论(0) 推荐(0)
摘要:PHP 的 Zend_Search_Lucence 是ZendFrameWork 的一个扩展包。因为是汉字,所以只能用UTF-8 来建立索引,建立了索引后发现搜索的时候不对了。原来,搜索的时候,即时你输入的字符串是UTF-8的,你也要默认的设置搜索字符的编码。看来下面的代码就应该明白了。用UTF-8建立索引是中文搜索的第一步,过几天再写篇文章介绍Zend_Search_Lucence索引中文。(下... 阅读全文
posted @ 2009-09-18 18:35 暮夏 阅读(632) 评论(0) 推荐(0)
摘要:PHP 中的整数是 C 语言的中的long 类型,是有符号的,最大值是 2^31 。在 64 位平台上,long可以达到 2^63.这样的话,有些PHP 函数输出的结果在各个平台上就会不一致了。php -r "echo ip2long('255.255.255.255');" 在64位平台下是: 4294967295, 在32位平台下是 -1。还有比如 filesize 在 文件 大于 2G的时候... 阅读全文
posted @ 2009-09-10 17:06 暮夏 阅读(622) 评论(0) 推荐(0)
摘要:最近在雅虎的一个朋友和我说,以前用bash csh 写脚本, 它现在都在用PHP 写后台程序,觉得PHP的函数最全,而且很容易用 shell_exec 很容易调用系统内核。我和他交流了一下写后台程序的一些原则,归纳如下。 首先,要去掉以前写网页脚本的一些思维习惯。网页脚本运行一次以后,就马上释放内存。而daemon 程序不一样,它会一直运行一年,甚至几年。1. 作为一个好的习惯,一定要在while... 阅读全文
posted @ 2009-09-07 11:01 暮夏 阅读(1905) 评论(1) 推荐(0)
摘要:PHP的扩展开发的确是一件很不容易的事情。我已经开发了好几个扩展了,可是每次都会遇到问题。很多问题,没有手册,根本就是让人束手无策。只有耐心的读它核心的代码,特别是出错部分的代码,才能找到一些端倪。 对于新手来说,首先要搞清楚里面的基本的概念。这点很重要。基本的概念有: PHP 程序的生存周期 thread safe unthread safe PHP 全局变量 PHP 预定义常量 zval 内... 阅读全文
posted @ 2009-09-02 18:37 暮夏 阅读(1150) 评论(2) 推荐(0)
摘要:google的PageRank,虽然各大网站都能查询,但是,具体是从google 哪个数据源来的?幸运的是,google tool bar上有pagerank的值。Sniffer 会告诉你,大概是从:GET /search?client=navclient-auto&iqrn=-WM&orig=0BATi&ie=UTF-8&oe=UTF-8&features... 阅读全文
posted @ 2009-09-02 10:21 暮夏 阅读(790) 评论(3) 推荐(1)
摘要:今天有个网友发信问我它开放了一个 php 的扩展,release 的版本是能运行的,但是这个debug的版本 不能运行。其实,基本原理很简单,PHP的内核 在 php5ts.dll,如果你是debug 版本的, 那么就要调用 php5ts_debug.dll 。这个dllphp 官方没有提供,不过你可以重新编译PHP得到。当然,重新编译PHP的话,在windows下是一项艰巨的任务。 还有,php... 阅读全文
posted @ 2009-08-21 21:11 暮夏 阅读(844) 评论(0) 推荐(0)
摘要:前一段时间一直做C++ 的开发,用惯了 Visual Studio 。今天用了 zend studio 6.12,非常的不习惯。调试的时候,经常卡死。写代码 Ctrl + s 也经常卡,非常无奈。上网搜索了一下,发现zend studio7.0 出来了,马上下载下来看看。安装了一下,在安装的时候,居然跳出了安装 Microsoft Visual C++ 2005 SP1 Redistributab... 阅读全文
posted @ 2009-08-17 19:33 暮夏 阅读(493) 评论(0) 推荐(0)
摘要:我翻遍了Google, 也没用找到一篇真正能运行的C++ 下面 开发 PHP 扩展的文章。于是,我又翻遍了pecl,看看有没有例子。 发现还是没有。唯一能看到的几个是:Linux 下面 开发 C++ 扩展的文章,一试,发现时 php 5.0 beta 时候的文章了,都已经 过时了。无奈只能自己摸索。 阅读全文
posted @ 2009-08-15 11:47 暮夏 阅读(1869) 评论(2) 推荐(0)
摘要:Zend Studio For Eclipse 代码提示功能经常因为更改 系统的编码等一些问题而出问题。你重新编译,有些时候,重新加项目都不行。用下面的方法可以解决:在一个 你的 正确的项目中,拷贝下面几个文件:.cache.settings.project把.project ,里面的name 里面的内容 改成现在的项目的名字。刷新一下项目,就可以了。如果再不行,重启 Zend Studio Fo... 阅读全文
posted @ 2009-07-31 13:59 暮夏 阅读(716) 评论(0) 推荐(0)