打标签 ‘ 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()能够返回指定月份共有多少天。 4. _() WordPress开发者经常能见到这个函数,还有_e()。这两个函数功能相同,与gettext()函数结合使用,能实现网站的多语言化。具体可参见PHP手册的相关部分介绍。 5. get_browser() 在发送页面前先看看用户的浏览器都能做些什么是不是挺好?get_browser()能获得用户的浏览器类型,以及浏览器支持的功能,不过首先你需要一个php_browscap.ini文件,用来给函数做参考文件。 要注意,该函数对浏览器功能的判断是基于该类浏览器的一般特性的。例如,如果用户关闭了浏览器对JavaScript的支持,函数无法得知这一点。但是在判断浏览器类型和OS平台方面,该函数还是很准确的。 6. debug_print_backtrace() 这是一个调试用的函数,能帮助你发现代码中的逻辑错误。要理解这个函数,还是直接看个例子吧: $a = 0; function iterate() { global $a; if( $a < 10 ) recur(); echo $a . “, “; } function recur() { global $a; $a++; // how did I get here? echo “\n\n\n”; debug_print_backtrace(); if( $a < 10 ) iterate(); } iterate(); # OUTPUT: #0 recur() called at [C:\htdocs\php_stuff\index.php:8] #1 iterate() called at [C:\htdocs\php_stuff\index.php:25] #0 recur() called at [C:\htdocs\php_stuff\index.php:8] #1 iterate() called at [C:\htdocs\php_stuff\index.php:21] #2 recur() called at [C:\htdocs\php_stuff\index.php:8] #3 [ 阅读全文]
mail()这个函数不是拿来就能用的,你需要再php.ini中做一些配置。一种方法是使用外部smtp邮件服务器;另一种方法是在本地配置一个邮件服务器。本文介绍如何利用hMailServer软件在本地配置邮件服务器。 hMailServer是一个邮件服务器软件,首先你需要下载并安装它,去这里下载,我下的是5.2版。安装的时候会提示你设置你的邮件服务器密码,记得保存好这个密码。启动hMailServer,输入密码,现在做一些简单的设置,直接照着图做就行了(点小图看大图),稍后解释这么做的目的。 第一步指定本地服务器名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 在 Google Code 下的 “Let’s make the web faster” 网站中,发表了一篇名为“PHP performance tips”的文章,介绍了一些php性能优化建议,其中: 不要随意复制变量 用单引号表示字符串 使用echo输出字符串 不要在echo中使用点号连接符 使用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;’ [ 阅读全文]
或许你会有直接在网页上显示psd文件的需要,那么classPhpPsdReader.php能帮助你。这是一个由Tim de Koning在2007年编写的一个基于GD库的PHP类,能够用PHP对图片进行一些操作,包括显示psd文件。这个类兼容PHP4和PHP5,可以放心使用。 使用方法也很简单,上传classPhpPsdReader.php,然后: <?php // 发送header header("Content-type: image/jpeg"); // 包含类文件 include_once('classPhpPsdReader.php'); // 显示psd文件 imagejpeg(imagecreatefrompsd('yourPsdFile.psd')); ?> 就这么简单。 下载classPhpPsdReader.php [ 阅读全文]
首先恭喜Zesen Wang同学成为全中国第17个获得ZCE认证的PHP工程师,他在今年四月初通过了考试,证书现在在从美国到中国的途中。 用他的话来说,考试挺简单:PHP基础不错,能看懂题目(英文的)就能过。他复习的是ZCE5教程和我翻译的ZCE4试题讲解,在4道填空题完全乱码没法做的情况下仍然通过了考试。 不过这ZCE在国内还真不怎么吃得开。从人才的角度看,知道的人少、考的人少、通过的更少;从用人单位的角度看,知道的单位少、承认的单位几乎没有。某同学也表示很无奈——获得ZCE认证后工资完全没有涨。 所以,125美刀买个虚荣,您觉得值那就是值。不过话说回来不少认证考试都存在类似的尴尬,比如我上学时考的计算机三级证书,还好只花了70块。 多做点项目吧,经验永远是最宝贵的财富。 [ 阅读全文]