四个PHP非常实用的功能


Posted in PHP onSeptember 29, 2015

最近写的几个PHP实用功能整理了一下,弄成一个文档,写上说明,方便以后使用!一共有4个PHP实用功能,现在跟大家分享,喜欢的朋友可以把它收藏起来,说不定以后用得上。

1. PHP函数的任意数目的参数
您可能知道PHP允许你定义一个默认参数的函数。但您可能并不知道PHP还允许你定义一个完全任意的参数的函数
下面是一个示例向你展示了默认参数的函数:

// 两个默认参数的函数
function foo($arg1 = '', $arg2 = '') {
echo "arg1: $arg1\n";
echo "arg2: $arg2\n";
}
foo('hello','world');
/* 输出:
arg1: hello
arg2: world
*/
foo();
/* 输出:
arg1:
arg2:
*/

现在我们来看一看一个不定参数的函数,其使用到了func_get_args()方法:

// 是的,形参列表为空
function foo() {
// 取得所有的传入参数的数组
$args = func_get_args();
foreach ($args as $k => $v) {
echo "arg".($k+1).": $v\n";
}
}
foo();
/* 什么也不会输出 */
foo('hello');
/* 输出
arg1: hello
*/
foo('hello', 'world', 'again');
/* 输出
arg1: hello
arg2: world
arg3: again
*/

2. Glob() 查找文件
 有很多PHP的函数都有一个比较长的自解释的函数名,但是,当您看到glob() 的时候,您可能并不知道这个函数是用来干什么的,除非您对它已经很熟悉了。 
你可以认为这个函数就好?scandir() 一样,其可以用来查找文件。

// 取得所有的后缀为PHP的文件
$files = glob('*.php');
print_r($files);
/* 输出:
Array
(
[0] => phptest.php
[1] => pi.php
[2] => post_output.php
[3] => test.php
)
*/

您还可以查找多种后缀名

// 取PHP文件和TXT文件
$files = glob('*.{php,txt}', GLOB_BRACE);
print_r($files);
/* 输出:
Array
(
[0] => phptest.php
[1] => pi.php
[2] => post_output.php
[3] => test.php
[4] => log.txt
[5] => test.txt
)
*/

 您还可以加上路径: 

$files = glob('../images/a*.jpg');
print_r($files);
/* 输出:
Array
(
[0] => ../images/apple.jpg
[1] => ../images/art.jpg
)
*/

如果你想得到绝对路径,你可以调用?realpath() 函数:

$files = glob('../images/a*.jpg');
// applies the function to each array element
$files = array_map('realpath',$files);
print_r($files);
/* output looks like:
Array
(
[0] => C:\wamp\www\images\apple.jpg
[1] => C:\wamp\www\images\art.jpg
)
*/

3. 查看内存使用情况
观察你程序的内存使用能够让你更好的优化你的代码。
PHP 是有垃圾回收机制的,而且有一套很复杂的内存管理机制。你可以知道你的脚本所使用的内存情况。要知道当前内存使用情况,你可以使用?memory_get_usage() 函数,如果你想知道使用内存的峰值,你可以调用memory_get_peak_usage() 函数。

echo "Initial: ".memory_get_usage()." bytes \n";
/* 输出
Initial: 361400 bytes
*/
// 使用内存
for ($i = 0; $i < 100000; $i++) {
$array []= md5($i);
}
// 删除一半的内存
for ($i = 0; $i < 100000; $i++) {
unset($array[$i]);
}
echo "Final: ".memory_get_usage()." bytes \n";
/* prints
Final: 885912 bytes
*/
echo "Peak: ".memory_get_peak_usage()." bytes \n";
/* 输出峰值
Peak: 13687072 bytes
*/

4. 查看CPU使用情况 
使用?getrusage() 函数可以让你知道CPU的使用情况。注意,这个功能在Windows下不可用。

print_r(getrusage());
/* 输出
Array
(
[ru_oublock] => 0
[ru_inblock] => 0
[ru_msgsnd] => 2
[ru_msgrcv] => 3
[ru_maxrss] => 12692
[ru_ixrss] => 764
[ru_idrss] => 3864
[ru_minflt] => 94
[ru_majflt] => 0
[ru_nsignals] => 1
[ru_nvcsw] => 67
[ru_nivcsw] => 4
[ru_nswap] => 0
[ru_utime.tv_usec] => 0
[ru_utime.tv_sec] => 0
[ru_stime.tv_usec] => 6269
[ru_stime.tv_sec] => 0
)
*/

这个结构看上出很晦涩,除非你对CPU很了解。下面一些解释:

ru_oublock: 块输出操作
ru_inblock: 块输入操作
ru_msgsnd: 发送的message
ru_msgrcv: 收到的message
ru_maxrss: 最大驻留集大小
ru_ixrss: 全部共享内存大小
ru_idrss:全部非共享内存大小
ru_minflt: 页回收
ru_majflt: 页失效
ru_nsignals: 收到的信号
ru_nvcsw: 主动上下文切换
ru_nivcsw: 被动上下文切换
ru_nswap: 交换区
ru_utime.tv_usec: 用户态时间 (microseconds)
ru_utime.tv_sec: 用户态时间(seconds)
ru_stime.tv_usec: 系统内核时间 (microseconds)
ru_stime.tv_sec: 系统内核时间?(seconds)

以上就是分享给大家的PHP实用功能,希望对大家的学习有所帮助。

PHP 相关文章推荐
第十二节 类的自动加载 [12]
Oct 09 PHP
优化PHP代码的53条建议
Mar 27 PHP
PHP 文章中的远程图片采集到本地的代码
Jul 30 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
使用PHP计算两个路径的相对路径
Jun 14 PHP
php cURL和Rolling cURL并发方式比较
Oct 30 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
Apr 01 PHP
PHP不用递归遍历目录下所有文件的代码
Jul 04 PHP
PHP类中的魔术方法(Magic Method)简明总结
Jul 08 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
Aug 14 PHP
完美实现wordpress禁止文章修订和自动保存的方法
Nov 03 PHP
PHP中捕获超时事件的方法实例
Feb 12 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
Sep 28 #PHP
PHP+AJAX实现投票功能的方法
Sep 28 #PHP
WIFI万能钥匙密码查询接口实例
Sep 28 #PHP
百万级别知乎用户数据抓取与分析之PHP开发
Sep 28 #PHP
培养自己的php编码规范
Sep 28 #PHP
ThinkPHP数据操作方法总结
Sep 28 #PHP
ThinkPHP表单数据智能写入create方法实例分析
Sep 27 #PHP
You might like
php var_export与var_dump 输出的不同
2013/08/09 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
jquery插件jquery倒计时插件分享
2013/12/27 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
理解javascript封装
2016/02/23 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
vue3.0 上手体验
2020/09/21 Javascript
Python 网页解析HTMLParse的实例详解
2017/08/10 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
Python字典实现伪切片功能
2020/10/28 Python
Pat McGrath Labs官网:世界上最有影响力的化妆师推出的彩妆品牌
2018/01/07 全球购物
英国领先的豪华时尚家居网上商店:Amara
2019/08/12 全球购物
温泉秘密:Onsen Secret
2020/07/06 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
介绍一下Python下range()函数的用法
2013/11/07 面试题
教师档案管理制度
2014/01/23 职场文书
员工培训邀请函
2014/02/02 职场文书
开学典礼致辞
2015/07/29 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书