四个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 14 PHP
php smarty 二级分类代码和模版循环例子
Jun 01 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
Jul 18 PHP
PHP spl_autoload_register实现自动加载研究
Dec 06 PHP
php 批量生成html,txt文件的实现代码
Jun 26 PHP
PHP也能干大事 随机函数
Apr 14 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
Jun 23 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
Feb 04 PHP
PHP+JQuery+Ajax实现分页方法详解
Aug 06 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
php连接MSsql server的五种方法总结
Mar 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
php 方便水印和缩略图的图形类
2009/05/21 PHP
PHP SEO优化之URL优化方法
2011/04/21 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
php引用和拷贝的区别知识点总结
2019/09/23 PHP
JS array 数组详解
2009/03/22 Javascript
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
vue自动化表单实例分析
2018/05/06 Javascript
webpack优化的深入理解
2018/12/10 Javascript
vue使用showdown并实现代码区域高亮的示例代码
2019/10/17 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
Vue常用API、高级API的相关总结
2021/02/02 Vue.js
[01:07:22]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG加赛
2014/05/26 DOTA
python调用百度语音识别实现大音频文件语音识别功能
2018/08/30 Python
Python清空文件并替换内容的实例
2018/10/22 Python
利用nohup来开启python文件的方法
2019/01/14 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
python网络应用开发知识点浅析
2019/05/28 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
Keras搭建自编码器操作
2020/07/03 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
服装设计专业自荐书范文
2013/12/30 职场文书
播音主持专业个人自我评价
2014/01/09 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
单身申明具结书
2015/02/26 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
德能勤绩工作总结
2015/08/11 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书