存档

‘深入PHP’ 分类的存档

Eclipse+PDT:PHP内置函数不能正常进行代码提示!

2009年7月12日

Eclipse+PDT:PHP内置(Core)函数不能正常进行代码提示(Code Assite)!

解决方法:

编辑.project 文件 ,删除<buildSpec>节点,重新关闭打开项目,然后测试下

.project 文件大概类似如下内容:



	name
	

	
	
		
			org.eclipse.wst.validation.validationbuilder
			
			
		
		
			org.eclipse.dltk.core.scriptbuilder
			
			
		
	
	
		org.eclipse.php.core.PHPNature
		org.eclipse.wst.jsdt.core.jsNature
	

深入PHP , ,

MySql升级及PHP连接库相关问题

2009年7月6日

PHP 5.3开始使用MySqlND作为默认的MySql访问驱动,而且从这个版本开始将不再支持使用旧的用户接口链接Mysql了,你可能会看到类似的提示:

#2000 - mysqlnd cannot connect to MySQL 4.1+ using old authentication

解决问题的方法不是调整PHP,而是检查你的Mysql,你需要确保两件事:

  • 你使用的Mysql是4.1+以上版本,4.1以前的版本只支持使用老的16位密码存储
  • 你准备用于连接的数据库帐号使用的MySql的新密码格式(41位的数据)

解决问题2的方法是重新设置账户的密码,并确保使用的标准Password()函数设置账户密码,相关指令如下:

-- 选择系统库
USE `mysql`
-- 显示当前的用户和密码,注意新的的密码格式应该是41位的加密字符,老的是16位的
SELECT `user`,`password` from `user`;

-- 更新指定的用户的密码,注意使用函数 password()
-- 有时针对一些特殊需要,你可以使用old_password()函数来建立一个或几个向下兼容的数据库账户
UPDATE `user` SET `password`=password('newpassword') WHERE `user`='UserName';

-- 刷新MySql权限库
FLUSH PRIVILEGES;

-- 最后别忘记了,MySql的命令行连接方式是:
MySql -u username@host -p password

深入PHP ,

MySQL的表类型和存储引擎

2009年7月6日

MySQL的表类型由存储引擎(Storage Engines)决定,类型包括MyISAM、innoDB、BDB等。

常用的存储引擎

MySQL 数据表主要支持六种类型 ,分别是:BDB、HEAP、ISAM、MERGE、MYISAM、InnoBDB。

这六种又分为两类,一类是”事务安全型”(transaction-safe),包括BDB和InnoDB;其余都属于第二类,称为”非事务安全型”(non-transaction-safe)。

BDB 全称是”Brekeley DB”,它是Mysql最早的具有事务能力的表的类型,由Sleepycat Software (http://www.sleepycat.com)开发。它提供了事务控制能力功能,它确保一组命令全部执行成功,或者当任何一个命令出现错误时所有命令的结果都被回退,可以想像在电子银行中事务控制能力是非常重要的。支持COMMIT、ROLLBACK和其他事务特性。最新版本的Mysql已经计划移除对BDB的支持,转而全力发展InnoDB。

阅读全文…

WEB应用开发, 深入PHP

使用Xdebug调试PHP程序

2009年7月1日

XDebug是个好东西啊,用来调试PHP程序的,可以和Eclipse配合。

配置步骤:(Windows+Apache+php环境)

1.下载和PHP版本环境相适应的XDebug版本,放置于PHP目录,主要None-ThreadSafe版似乎是用来在CLI方式下使用的,一般不需要

2.修改php.ini文件,参考如下

[Xdebug]
;zend_extension_ts	= "D:\server\php5\ext\php_xdebug-2.0.5-5.3-vc6.dll"
;发现在PHP5.3+Apache(CGI)方式下,似乎必须使用 zend_extension 加载才能成功
zend_extension		= "D:\server\php5\ext\php_xdebug-2.0.5-5.3-vc6-nts.dll"

xdebug.auto_trace		= off		;开启自动跟踪

xdebug.remote_autostart		= off		;开启远程调试自动启动
xdebug.remote_enable		= 1
xdebug.remote_host		= 10.5.184.251
xdebug.remote_port		= 9000
;xdebug.remote_handler		= “dbgp”

xdebug.show_exception_trace	= On		;开启异常跟踪

xdebug.collect_vars		= On		;收集变量
xdebug.collect_return		= On		;收集返回值
xdebug.collect_params		= On		;收集参数

注意:remote_host应该填写远程调试机的地址,而不是PHP服务器的地址,在Xdebug运行方式下,调试工具实际是调试过程的服务端,Xdebug会主动连接指定的remoete_host,从而建立调试通讯。所以要注意调试机的防火墙问题


3.配置调试工具,Eclipse就很好用,具体不说了,摸索下就可以了

阅读全文…

WEB应用开发, 深入PHP , ,

Windows系统下WEB服务器自动架设安装包的比较

2009年2月15日

这是我老早写的一个笔记了,刚才翻出来了,有些内容可能已经过时了,随便看看吧。所有测试均在Win2003Server下进行。

AMP环境架设

WAMP5 1.7.2

o 安装简单,安装过程英文,自动配置界面简单,功能简单
o 默认没有启用Short_tag,gd 等常用功能

XAMPP

o http://www.apachefriends.org/en/xampp-windows.html
o 注意:默认安装完成没有任何安全设置!!必须立即设定一些安全设置,包括:Mysql Root帐号等等!
o 集成软件较多
o 自动配置界面略优于WAMP
o 仅适合于本地测试,调试,如果使用在正式的服务器上,必须仔细进行安全设置!!

AMPServ

APMServ 5.2.0 是一款拥有图形界面的快速搭建Apache 2.2.3、PHP 5.2.0、MySQL 5.0.27&4.0.26、SQLite、ZendOptimizer、OpenSSL、phpMyAdmin、SQLiteManager,以及 ASP、CGI、Perl网站服务器平台的绿色软件。

集成软件:

* Apache 2.2.3          [HTTP服务器]
* NetBox 2.8 Build 4128 [HTTP服务器+ASP脚本解释引擎]
* PHP 5.2.0             [PHP脚本解释引擎]
* MiniPerl 5.8          [Perl脚本解释器]
* MySQL 5.0.27          [MySQL数据库服务器]
* MySQL 4.0.26          [MySQL数据库服务器]
* SQLite 3.3.8          [SQLite数据库服务器]
* phpMyAdmin 2.9.1.1    [MySQL数据库在线管理工具]
* SQLiteManager 1.2.0   [SQLite数据库在线管理工具]
* ZendOptimizer 3.2.0   [PHP脚本加速引擎]
* OpenSSL 0.9.8d        [HTTPS(SSL)安全传输协议]

特点:

* 直接解压安装
* 内置Apache虚拟主机管理
* Myslq5.0 和 Mysql4.0可以方便的并存
* 默认Mysql没有密码!!
* 自动配置界面较乱,功能不少,但仍然缺少很多必须的功能

APM_Setup (推荐)

APM_Setup 5 for Win32 ( http://www.apmsetup.com/ ,http://www.isk.com.cn )
国内软件,与PHP_SETUP_for_IIS是同一个公司出品的。
– Webalizer Version 2.0.1 – http://www.webalizer.org
– MySQL Version 4.0.26 – http://www.mysql.com
– PHP Version 4.4.3-dev – http://www.php.net
– Zend Optimizer Version 2.6.0 – http://www.zend.com
– phpMyAdmin Version 2.7.0-pl2 – http://www.phpmyadmin.net
– Apache HTTP Server Version 1.3.34 – http://httpd.apache.org
文件:APM_Setup5_2006_01_23_CN.exe
说明:

* 似乎是从摸个国外的版本修改过来的
* 自动配置界面较丰富
* 内置了一个服务器管理的WEB界面,但似乎存在一些BUG
* 集成软件版本较旧
* 默认数据库密码是:ampsetup,注意ampsetup配置界面中的Mysql密码填写处并不是用于修改Mysql密码的,而是需要在正常修改完Mysql密码后在此处填写新密码,以便于管理。

IIS环境架设

PHP_Setup_for_IIS_v20060119_CN.exe (mysql 4 + PHP5)

o PHP映射仅影响到默认网站,如果新建网站还需要重新配置映射
o 默认以CGI方式映射
o 默认WWW目录没有可写权限,需专门设置.

* PHP_Setup_for_IIS_v20060119_CN.exe (mysql 4 + PHP4)

o 注意:自动对wwwroot目录增加了一个拒绝权限,禁止IUSR删除文件,必须在高级权限设置中删除这一权限
o 不支持PATH_INFO

* PHP_Setup_for_ISS (Mysql5+PHP5)

注意:自动对wwwroot目录增加了一个拒绝权限,禁止IUSR删除文件,必须在高级权限设置中删除这一权限
o 不支持PATH_INFO

WEB应用开发, 深入PHP , , ,

UML关系定义的解析及思维导向图

2009年1月5日

对UML的关系定义一直有点感觉混乱,这是一天的学习总结,主要成果是下面的这张图,这张图没有按照一般的 Has a / Use a / Is a的3类法进行分类,而是把 Has a 作为了 Use a的一个子集来分析。因为没有看到任何其他参考资料使用了这种方式,所以这种方法未必完全准确,仅供参考。


UML关系解析思维导向图

UML关系解析思维导向图


阅读全文…

WEB应用开发, 深入PHP , ,

Linux入门-安装篇(Debian 服务器版)

2008年10月30日

本文描述了安装一个Linux(Debian)服务器的全过程,并附加了一些必要的参考文章,通篇以Debian为基础,以建立一个服务器(非桌面环境)为主要目的。

阅读全文…

WEB应用开发, 深入PHP , , , , ,

Windows平台下Apache+PHP4+PHP5+FastCGI安装笔记

2008年10月27日

Go PHP5

很多开发组织已经开始参与到 Go PHP5 的活动中来了,PHP官方也早已经声明于2007年底停止对PHP4的所有技术支持,看来PHP5/6的广泛应用已经是不可抗拒的浪潮了,仅仅是时间问题,而且时间不会太长。

Apache+PHP+FastCGI

对于目前的过渡阶段,很多开发者还是需要一个可以实现PHP4和PHP5共存的开发环境,这两天尝试在Windows下使用APACHE环境配置了一个PHP4和PHP5共存的环境,请注意:此配置使用 CGI 运行方式,而没有使用常见的 Apache modules 方式。我曾经尝试使用 Apache modules方式配置双PHP,但没有成功。

关键特性:

  1. Windows+Apache+PHP(Apache2.0下测试)
  2. PHP4+PHP5共存
  3. FastCGI

以下是配置中用到的Apache Conf:

阅读全文…

WEB应用开发, 深入PHP , , , , , ,

PHP框架基准测试比较

2008年10月19日

这篇文章是一个翻译,英文原文在 PHP framework comparison benchmarks,我的英文水平很一般,可能会有翻译不确切的地方(把握不大地方使用斜体进行了标志,并附带了英文原文),请指正,并参看原文。 Emeric.Lee 2008.10.18

为了讨论我在另一篇文章(重新审视PHP框架 CodeIgniter VS Zend)中作出的关于PHP框架性能的比较,我决定公开我所取得的详细结果。我一开始没有公开这个测试结果是因为测试不是在完全隔离的条件下进行的(独立的客户端和服务器),但是每个测试结果应该是准确的,这也是我测试的目的。

另外,我仅仅使用了‘请求数/秒’ 作为性能的衡量标准,我不认为在实际应用中还有其它的因素可以更好的衡量WEB应用程序的相应速度。

工具

测试计算机有1.8G的AMD Sempron CPU,521M 内存,运行Ubuntu Gutsy (7.10) Desktop 操作系统。

我使用 httperf 运行测试,另外也使用apachebench 进行了一些重复测试,测试结果是吻合的。

我使用CakePHP, CodeIgniter, Zend Framework 和Ruby on Rails.分别建立了一个相同的首页,而且我还是用静态HTML和过程化的PHP代码(又称为套管程序)复制实现了相同的功能,以此作为测试基准。

我决定在测试中包含数据访问,测试中应用程序从数据库中提取了4条记录并生成结果页面。

有兴趣的人可以下载测试文件,包括Mysql数据库的SQL文件。测试代码假设数据库有Root用户并且没有密码(如果你准备自己运行测试,也许需要修改相关部分代码)。

测试结果

阅读全文…

WEB应用开发, 深入PHP , , , , , , ,

重新审视PHP框架 CodeIgniter VS Zend

2008年10月18日

这篇文章是一个翻译,英文原文在 PHP frameworks revisited – CodeIgniter vs Zend,我的英文水平很一般,可能会有翻译不确切的地方(把握不大地方使用斜体进行了标志,并附带了英文原文),请指正,并参看原文。 Emeric.Lee 2008.10.17

我们计划从头开始一个新项目,为此评估了一些PHP框架。我们的备选列表有CakePHP , CodeIgniter , Symfony和Zend 。 我们分别使用这4种框架编写了一个相同的小应用(一个简单的Wiki应用),希望我们能尽快选定一个最合适的。

声明:我会努力确保自己的客观性,虽然我是一个ColdeIginter的爱好者。我所工作的公司是Zend的合伙人(我们已经使用了Zend Platform 和 Zend Studio)。I can’t help factoring that in

阅读全文…

WEB应用开发, 深入PHP , , , ,

Zend Framework 框架典型初始化过程的效率测试与分析

2008年6月19日

测试目的

在一个典型的PHP服务器环境下运行一个典型的Zend Framework,并分段逐步分析性能消耗情况

阅读全文…

IT前沿, WEB应用开发, 深入PHP , , , , ,

开始一个新PHP项目 iZhaoPin-“爱招聘”

2008年4月30日

现在开始一个新的PHP项目,名称暂定为 iZhaoPin,中文名称 “爱招聘”,名字够土不,呵呵,这叫朴实,跟产品定位有关系。

产品定位:地区和(或)垂直人才招聘系统,要与全国性的系统有明显区别,

产品平台:PHP 5+ / Mysql

产品计划特性:

  • 1、根据国内的人文习惯开发一个具有便捷定制能力的人才招聘系统
  • 2、要适应地区招聘和特色招聘(如专项、专题招聘,校园招聘,行业招聘)的个性表现需求
  • 3、界面朴实,操作简便
  • 4、*充分考虑SEO,适当运用RSS、ping、Trackback等新技术
  • 5、*适当使用AJAX,但还是准备以静态页面为主
  • 6、开源方式发布(可能会加密部分核心代码)
  • 7、OOP导向开发,准备选择使用一款成熟的PHP的开发框架 (那位老大给推荐下哈)

暂时就想到这么多,边做边补充吧。

广告:这是一个应订单需求开发的项目,如果有人想搭顺风车,请尽快联系,可以提供经济的定制开发服务,过期不侯。

WEB应用开发, 深入PHP

Zend Studio 5.5 中文显示及字体选择

2007年6月29日

1、如何改变编辑器字体

菜单->工具->首选项->颜色和字体(如下图)

2.jpg

如图,在突出显示区域,点击另存为,新建一个编辑模式名称,软件默认的编辑模式是不可修改的,所以要新建

选择编辑器字体,字号

可以正常显示中文的字体有:
Dialog
DialogInput
Serif
SansSerif
Minliu
Pminliu
Airial Unicode MS
新宋体
宋体
未经完全测试,可能还有其他字体可以正常显示.大家根据个人喜好选择自己喜欢的字体.

很遗憾,我还没有找到自己满意的字体,现在只好先凑合用:DialogInput 和 Dialog

2、启动字体显示反锯齿,如下图

1.jpg

3、更进一步
如果你对以上可以使用的字体不满意,你想任意使用其他字体,并且要求能够显示中文。
请看这里:Zend Studio中文字体显示彻底解决及JAVA环境下的中文乱码解决方案

深入PHP

设计模式学习总结(笔记)

2007年5月24日

我是那种非科班出身的程序员,很少完整阅读成本的技术类书籍,感觉很多书的内容都有太多罗嗦的地方。但是最近看到一本书《Guide to PHP Design Patterns》(中文名<PHP实际模式指南>)让我重温了久违的阅读享受。

这是一本系统介绍设计模式在PHP编程中应用的书,基本回答了两个问题:1、什么是设计模式,2、有哪些常用设计模式;还有一个附加问题:常用设计模式在 PHP中的具体实现。全书语言流畅,用例明晰,虽然看完后你会发现有一些设计模式其实你早已经无意识的使用了,但是它仍然会让你有顿悟的体会。

围绕这本书,我用了3天的时间研究了一下关于设计模式的一些概念,最后又用了2天来总结,就有了这篇文章。总结的主要目的是让自己更深刻的理解设计模式,也可以说是个全面一点的学习笔记,文字力求通俗,避免概念陷阱。

很多文字写的可能有点武断、大胆。肯定也会有些错误的认识,等到有更深刻的理解时再来完善把!

1 关于设计模式

设计模式可以理解为对开发中常见问题/需求的解决方案的高度抽象,这些问题/需求有具体的细节的,也有全局的结构性的。

在层次上,它应该是一个介于代码库和设计指导思想之间的一个东西,比代码库要抽象地多,比指导思想原则又要具体的多。

个人认为对于设计模式的学习应该是这样的一个目的,即“知道这件事情原来可以这样解决”,而不是“这件事情应该这样解决”。似乎还可以应验了“无招胜有招”这句经典武侠用语,你应该学习、理解这些设计模式,然后忘掉这些乱七八糟的东西。

当然,这些也许都是我无知无畏的狂妄。

阅读全文…

IT前沿, WEB应用开发, 深入PHP

Zend Optimizer 3.X 安装时遇到的一个问题

2007年5月17日

今天安装Zend Optimizer 3.2.6,本来以为很简单,可是安装完成后,发现PHP不能正常工作,访问页面时一直处于连接读取状态,好像是服务器运行PHP代码时停顿了一样。
反复查找原因,灭有解决。
最后想到我曾经在这台服务器上安装过eaccelerator,会不会有冲突。
检查了一下php.ini,果然zend optimizer的安装程序改错了php.ini.具体如下

php.ini
[Zend]
;zend_extension_ts="D:\app\zend\lib\ZendExtensionManager.dll"
;上一行是zend optimizer安装程序自动改写的,注释掉,并改成下面这行就工作正常了。
zend_extension_ts="D:\app\php\extensions\eaccelerator_win_4.4.1.dll"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="F:\temp\eacc"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"+
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
zend_extension_manager.optimizer_ts="D:\app\zend\lib\Optimizer-3.2.6"
zend_extension_ts="D:\app\zend\lib\ZendExtensionManager.dll"

注意:以上代码中的路径根据具体服务器环境是不同的。
安装过eaccelerator,又安装新的zend optimizer的人可能会遇到相同的问题,特记录。

深入PHP