四个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+javascript模拟Matrix画面
Oct 09 PHP
第六章 php目录与文件操作
Dec 30 PHP
php后退一页表单内容保存实现方法
Jun 17 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
PHP打开和关闭文件操作函数总结
Nov 18 PHP
PHP查询附近的人及其距离的实现方法
May 11 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
May 26 PHP
PHP微信企业号开发之回调模式开启与用法示例
Nov 25 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 PHP
php生成静态页面并实现预览功能
Jun 27 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 PHP
php 解析非标准json、非规范json
Apr 01 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
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
php支付宝手机网页支付类实例
2015/03/04 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
开启PHP的伪静态模式
2015/12/31 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
关于laravel模板中生成URL的几种模式总结
2019/10/18 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
Python中apply函数的用法实例教程
2014/07/31 Python
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
Python简单计算文件夹大小的方法
2015/07/14 Python
Python面向对象编程中关于类和方法的学习笔记
2016/06/30 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
win10 64bit下python NLTK安装教程
2018/09/19 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
10张动图学会python循环与递归问题
2021/02/06 Python
css3实现书本翻页效果的示例代码
2021/03/08 HTML / CSS
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
杭州联环马网络笔试题面试题
2013/08/04 面试题
JAVA招聘远程笔试题
2015/07/23 面试题
摄影实习自我鉴定
2013/09/20 职场文书
好的旅游活动方案
2014/08/19 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
社区好人好事材料
2014/12/26 职场文书