标签归档:php

选择网站主机时必须注意的20个问题

image

哈哈,既然你点开了这篇文章,我猜十有八九你是个Web开发人员。虽然开发网站比考虑主机方面的问题有趣多了,但主机的选择的确是个非常重要的事情,不可草率决定,否则后患无穷。

本文指出了20个在选择网站主机时必须注意的问题,希望对你有所帮助。

1 容量

在选择主机时,首先你考虑的就是“我可以存储多少数据?”对绝大多数中小型网站来说,有上那么几个G的容量就足够了。有些主机商提供“无限空间”的主机(主要是国外的主机商),这其实是骗人的。仔细去读他们的《服务条款》,他们往往会说:没错,我们提供无限容量的主机,前提是你必须是“正常”网站。但什么是正常网站?这可就由不得你了。所以还是选择又设定容量的主机比较稳妥。

另外特别要注意的是,有些国内主机是把数据库容量和网页空间容量分开计算的,购买前务必注意。

2 带宽(流量)

带宽有时又叫流量,和容量两个概念容易搞混。容量指的是你拥有的硬盘空间,比如100MB,那你最多就只能存储100MB的网页、数据或多媒体文件。而带宽指的是在一定周期内(通常是一个月)你的主机允许的用户上传/下载的总容量。比如你的主机上有个1MB的网页,当用户查看这个网页1000次,就产生了1G的流量(带宽)。

继续阅读

phpMyAdmin开发人员访谈——4个人支持整个项目

673-phpmyadmin-logo-s-

如果说哪个开源程序不需要介绍大家就认识,那一定是phpMyAdmin,一款流行的MySQL数据库的Web管理界面。MySQL是全球最流行的Web程序数据库,而phpMyAdmin让MySQL更易于管理。phpMyAdmin允许数据库设计师连接MySQL,查看他们具有权限的所有数据库和数据表,并在上面执行操作,如创建和调整表结构、插入和更新数据、导入和导出,以及在多个服务器上同步数据。

继续阅读

10个不常见却很有用的PHP函数

1. sys_getloadavg()

sys_getloadavt()可以获得系统负载情况。该函数返回一个包含三个元素的数组,每个元素分别代表系统再过去的1、5和15分钟内的平均负载。

与其让服务器因负载过高而宕掉,不如在系统负载很高时主动die掉一个脚本,sys_getloadavg()就是用来帮你实现这个功能的。 不过很遗憾,该函数在windows下无效。

2. pack()

Pack()能将md5()返回的32位16进制字符串转换为16位的二进制字符串,可以节省存储空间。

3. cal_days_in_month()

继续阅读

10个你可能从未用过的PHP函数

1. sys_getloadavg()

sys_getloadavt()可以获得系统负载情况。该函数返回一个包含三个元素的数组,每个元素分别代表系统再过去的1、5和15分钟内的平均负载。

与其让服务器因高负载宕掉,不如在系统负载很高时主动die掉一个脚本,sys_getloadavg()就是用来帮你实现这个功能的。 不过很遗憾,该函数在windows下无效。

2. pack()

Pack()能将md5()返回的32位16进制字符串转换为16位的二进制字符串,可以节省存储空间。

3. cal_days_in_month()

cal_days_in_month()能够返回指定月份共有多少天。

继续阅读

PHP4何时会死?

goPHP5-283x100

PHP4 何时会死?要回答这个问题,先得明确 PHP4 应不应该死。从 PHP5 开始,大量强化面向对象编程的功能和特性被加入到PHP中,OOP编程变得更加容易和高效;一些函数的性能得到了优化;增加了如 XML 处理等符合时代潮流的函数系列;修改了部分设置以强化安全性。从发展的眼光看,新的版本淘汰旧版本是必然趋势

PHP 官方在2007年的最后一天正式停止对PHP4的更新,但PHP4并没有立刻死亡:许多升级缓慢的服务器、尤其是虚拟主机提供商仍然保留着 PHP4。

我们无法统计有多少服务器仍然在运行PHP4,但是在对ChkVersion上46个基于PHP的建站程序的最新稳定版本做了一番调查后,发现其中竟然有30个程序仍然支持PHP4,占到总数的65%。其中不乏耳熟能详的著名建站软件,如WordPress(最低支持到4.3)、Drupal(最低支持到4.3.5)、Joomla(最低支持到4.3.10)、Dizcuz(最低支持到4.1)。

继续阅读

为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请点这里