标签归档:php

为PHP的mail()函数配置本地邮件服务器

mail()这个函数不是拿来就能用的,你需要再php.ini中做一些配置。一种方法是使用外部smtp邮件服务器;另一种方法是在本地配置一个邮件服务器。本文介绍如何利用hMailServer软件在本地配置邮件服务器。

hMailServer是一个邮件服务器软件,首先你需要下载并安装它,去这里下载,我下的是5.2版。安装的时候会提示你设置你的邮件服务器密码,记得保存好这个密码。启动hMailServer,输入密码,现在做一些简单的设置,直接照着图做就行了(点小图看大图),稍后解释这么做的目的。

hmailserver-2

hmailserver-3

hmailserver-4

第一步指定本地服务器名localhost,这个没什么好说。

第二步,在”Advanced>>IP Range>>My Computer”里,把POP3和IMAP前面的勾去掉,因为我们并不想用这个服务器收信,也不打算用IMAP协议;把所有的“Require SMTP authentication”选项都去掉是帮PHP扫清发信的障碍。

第三步,在”Advanced>>IP Range>>Internet”中,把SMTP, POP3, IMAP全部去掉,因为我们不想外人使用我们的邮件服务器;同时把“Require SMTP authentication”以加强安全性。

现在本地邮件发送服务器就配置完毕了。最后不要忘记在php.ini中确保以下部分没有被注释掉:

[mail function]
; For Win32 only.
smtp = localhost
smtp_port = 25

; For Win32 only.
sendmail_from = user@yourdomail.com

sendmail_from虽然可以不用设置,但是为了以防万一,最好设置一个默认值。

现在你就可以在本地自由的使用mail()函数了。但是不要乱发垃圾邮件哦!

Google犯下天大错误,5条PHP优化建议遭痛批

首先我承认我有点标题党了,然后:

近日Google 在 Google Code 下的 “Let’s make the web faster” 网站中,发表了一篇名为“PHP performance tips”的文章,介绍了一些php性能优化建议,其中:

  1. 不要随意复制变量
  2. 用单引号表示字符串
  3. 使用echo输出字符串
  4. 不要在echo中使用点号连接符
  5. 使用switch/case代替if/else

这篇文章发表后没多久就立刻遭到了一些PHP社区和个人无情的批驳,他们声称Google错了,错的很彻底,这5条看似有效优化建议其实完全是迷信:

1. 不要随意复制变量

Zend引擎采用了“写时复制”机制,这意味着无论你对变量进行多少次复制,真正的复制动作都仅在变量值改变时才发生。

2. 用单引号表示字符串

无数的基准测试已经证明,使用双引号表示纯字符串并不比使用单引号时慢。有兴趣的朋友也可以重复一下这个测试:

php > $blah=”blah”; $s=microtime(true); for($i=0;$i<100000;$i++) “omgwtf$blah\n”; echo microtime(true)-$s;
0.044615983963013
php > $blah=”blah”; $s=microtime(true); for($i=0;$i<100000;$i++) ‘omgwtf’.$blah.”\n”; echo microtime(true)-$s;
0.042807102203369

3. 使用echo输出字符串

根据php所在服务器环境的不同,某些情况下echo会比print()慢。这里有一篇echo和print()对比的帖子,对echo和print()的速度进行了测试:http://www.learnphponline.com/php-basics/php-echo-vs-print

4. 不要在echo中使用点号连接符

基准测试证明这又是一条与事实完全相反的建议。php引擎处理以点号连接(或者使用双引号)传递给echo的变量实际上是更快的。你可以重复这个测试:

$ php -d implicit_flush=off -r ‘$s=microtime(true); for($i=0;$i<100000;$i++) echo “omgwtf”,”bbq”,”\n”; echo microtime(true)-$s;’ | tail -n 1
1.071463108062710
$ php -d implicit_flush=off -r ‘$s=microtime(true); for($i=0;$i<100000;$i++) echo “omgwtf”.”bbq”.”\n”; echo microtime(true)-$s;’ | tail -n 1
0.44555306434631

5. 使用switch/case代替if/else

这条建议毫无意义。关于是要使用switch/case还是if/else的问题,其实完全是个代码风格问题,而它们的效率相差无几。

一向以技术为长的Google,竟然在技术问题上犯了如此错误,相当不严谨。PHP小组已经督促文章作者重新仔细审查文章,希望能尽快改掉,以正视听。

用PHP在网页上显示psd文件

或许你会有直接在网页上显示psd文件的需要,那么classPhpPsdReader.php能帮助你。这是一个由Tim de Koning在2007年编写的一个基于GD库的PHP类,能够用PHP对图片进行一些操作,包括显示psd文件。这个类兼容PHP4和PHP5,可以放心使用。

使用方法也很简单,上传classPhpPsdReader.php,然后:

就这么简单。

下载classPhpPsdReader.php

ZCE那回事

首先恭喜Zesen Wang同学成为全中国第17个获得ZCE认证的PHP工程师,他在今年四月初通过了考试,证书现在在从美国到中国的途中。

用他的话来说,考试挺简单:PHP基础不错,能看懂题目(英文的)就能过。他复习的是ZCE5教程和我翻译的ZCE4试题讲解,在4道填空题完全乱码没法做的情况下仍然通过了考试。

不过这ZCE在国内还真不怎么吃得开。从人才的角度看,知道的人少、考的人少、通过的更少;从用人单位的角度看,知道的单位少、承认的单位几乎没有。某同学也表示很无奈——获得ZCE认证后工资完全没有涨。

所以,125美刀买个虚荣,您觉得值那就是值。不过话说回来不少认证考试都存在类似的尴尬,比如我上学时考的计算机三级证书,还好只花了70块。

多做点项目吧,经验永远是最宝贵的财富。

pChat——无敌PHP图表库

无图无真相,先上图:

example1

example2

example6

example8

example10

example12

上面这些是什么?这可不是Excel做的图表,更不是Photoshop做的,这全是用pChat做的。

pChat是一个面向对象的PHP类,用于创建图表。它是开源的,免费的。数据可以来自SQL查询、CSV文件或者手工录入。然后指定图表样式,一张漂亮的图表就生成了。pChat需要GD库支持。

这里有更多用pChat做的例子可以看,下载pChat请点这里