四个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 相关文章推荐
PHP 创建标签云函数代码
May 26 PHP
php教程 插件机制在PHP中实现方案
Nov 02 PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 PHP
PHP实现对站点内容外部链接的过滤方法
Sep 10 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
php基于curl主动推送最新内容给百度收录的方法
Oct 14 PHP
利用switch语句进行多选一判断的实例代码
Nov 14 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
DWZ+ThinkPHP开发时遇到的问题分析
Dec 12 PHP
php微信公众号开发之校园图书馆
Oct 20 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
Apr 02 PHP
php时间戳转换代码详解
Aug 04 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
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
javascript 打印页面代码
2009/03/24 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
深入理解React高阶组件
2017/09/28 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
详解python单例模式与metaclass
2016/01/15 Python
python 列表删除所有指定元素的方法
2018/04/19 Python
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
python如何写个俄罗斯方块
2020/11/06 Python
体育教师工作总结的自我评价
2013/10/10 职场文书
护士实习鉴定范文
2013/12/22 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
大学生违纪检讨书300字
2014/10/25 职场文书
烟台的海导游词
2015/02/02 职场文书
化验室岗位职责
2015/02/14 职场文书
银行求职信怎么写
2019/06/20 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python
Python 实现定积分与二重定积分的操作
2021/05/26 Python
PyTorch device与cuda.device用法
2022/04/03 Python
Python如何让字典保持有序排列
2022/04/29 Python