实用的PHP功能详解(一)_php glob()用法
一、使用glob()查找文件
大部分PHP函数的函数名从字面上都可以理解其用途,但是当你看到 glob() 的时候,你也许并不知道这是用来做什么的,其实glob()和scandir() 一样,可以用来查找文件,请看下面的用法:
// 取得所有的后缀为PHP的文件 $files = glob(‘*.php’); print_r($files); /* 输出: Array ( [0] => phptest.php [1] => pi.php [2] => post_output.php [3] => test.php ) */
二、获取内存使用情况信息
PHP的内存回收机制已经非常强大,你也可以使用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 */
三、获取CPU使用情况信息
获取了内存使用情况,也可以使用PHP的 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 ) */
- 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)
// sleep for 3 seconds (non-busy) sleep(3); $data = getrusage(); echo “User time: “. ($data['ru_utime.tv_sec'] + $data['ru_utime.tv_usec'] / 1000000); echo “System time: “. ($data['ru_stime.tv_sec'] + $data['ru_stime.tv_usec'] / 1000000); /* 输出 User time: 0.011552 System time: 0 */
sleep是不占用系统时间的,我们可以来看下面的一个例子:
// loop 10 million times (busy) for($i=0;$i<10000000;$i++) { } $data = getrusage(); echo “User time: “. ($data['ru_utime.tv_sec'] + $data['ru_utime.tv_usec'] / 1000000); echo “System time: “. ($data['ru_stime.tv_sec'] + $data['ru_stime.tv_usec'] / 1000000); /* 输出 User time: 1.424592 System time: 0.004204 */
$start = microtime(true); // keep calling microtime for about 3 seconds while(microtime(true) – $start < 3) { } $data = getrusage(); echo “User time: “. ($data['ru_utime.tv_sec'] + $data['ru_utime.tv_usec'] / 1000000); echo “System time: “. ($data['ru_stime.tv_sec'] + $data['ru_stime.tv_usec'] / 1000000); /* prints User time: 1.088171 System time: 1.675315 */
我们可以看到上面这个例子更耗CPU。
四、传递任意数量的函数参数
我们在.NET或者JAVA编程中,一般函数参数个数都是固定的,但是PHP允许你使用任意个数的参数。下面这个示例向你展示了PHP函数的默认参数:
// 两个默认参数的函数 function foo($arg1 = ”, $arg2 = ”) { echo “arg1: $arg1\n”; echo “arg2: $arg2\n”; } foo(‘hello’,'world’); /* 输出: arg1: hello arg2: world */ foo(); /* 输出: arg1: arg2: */ 下面这个示例是PHP的不定参数用法,其使用到了 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 */
转载于:https://www.cnblogs.com/auto6s/p/3400070.html
实用的PHP功能详解(一)_php glob()用法相关推荐
- mysql防止超发_PHP+redis实现的限制抢购防止商品超发功能详解
本文实例讲述了PHP+redis实现的限制抢购防止商品超发功能.分享给大家供大家参考,具体如下: redis不仅仅是单纯的缓存,它还有一些特殊的功能,在一些特殊场景上很好用.redis中key的原子自 ...
- Word邮件合并功能详解:合并后生成多个word文档,删除空白页
Word邮件合并功能详解:合并后生成多个word文档,删除空白页 最近在实习,干了很多打杂得工作,所以office软件用的很多很多,瞬间觉得自己可以去裸考计算机二级了哈哈哈哈哈哈.今天因为工作用到了邮 ...
- ssi 指令 php,SSI使用详解(一)_php
综述 SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思.从技术角度上说,SSI就是在html文件中,可以通过注释行调用的命令或指针.SSI具有强大的功能,只 ...
- tekla二次开发用C语言,Tekla能够进行哪些二次开发?Tekla二次开发功能详解
我们话不多说,这次小编来给你讲一些搜罗而来的Tekla软件二次开发的功能.虽然是科普,不过这些二次开发功能有的还真的是很好用的,帮了大忙. 一.桥梁功能 如果向Tekla插件中加入了桥梁模块的功能,通 ...
- CorelDRAW Graphics Suite2023新功能详解下载教程
CorelDRAW2023版本有效快速创作,充分体现设计者创意,一款全面图形设计软件.应用广告宣传.艺术作品.纺织业等各个行业. CorelDRAW Graphics Suite涵盖了全部CorelD ...
- procreate功能详解_转载
登录 在 iPad 上拥有一支「万能」画笔:Procreate 画笔功能详解 DerQi 2020 年 01 月 03 日 Procreate 是目前 iPad 上表现最出色的绘图工具之一,不仅仅体现 ...
- IOS视频编辑功能详解上篇-添加水印
前言 用代码在简单视频编辑中,主要就是加美颜.水印(贴图).视频截取.视频拼接.音视频的处理,在美颜中,使用GPUImage即可实现多种滤镜.磨皮美颜的功能,并且可以脸部识别实时美颜等功能,这个有很多 ...
- redis stream持久化_Beetlex.Redis之Stream功能详解
原标题:Beetlex.Redis之Stream功能详解 有一段时间没有写文章,techempower的测试规则评分竟然发生了变化,只能忘着补充一下占比权重最多的数据更新示例了和深入设计一下组件模块化 ...
- endnotex7怎么导入中文文献_EndNote X7自动导入PDF功能详解 | 科研动力
在Endnote X7 新功能简介一文中对于EndNote X7的自动导入PDF功能作了一简要介绍,但是有些人对于EndNote自动导入PDF的功能还是有疑问,本文就EndNote如何自动导入PDF功 ...
最新文章
- 将日期yyyy-MM-dd转为数字大写的形式
- day04 JDBC java数据库连接
- 尚学堂Spring视频教程(二):Spring控制反转
- 一对多关系(one-to-many)
- php delete和truncate,TRUNCATE 删除表,无法回退。默认选择为整个表的内容,所以不能加条件。...
- centos 安装pm2
- 什么叫做形态学图像处理_Python图像处理膨胀与腐蚀
- 电脑前面耳机插孔没声音,后面有声音
- JDK如何安装与配置环境变量
- ps 简单的抠图操作
- 快手提前批--Java开发面经
- ERDAS将DN值转换为TOA光谱辐射亮度时 出现建模错误原因
- 给语音识别文本加上标点符号
- (01)ORB-SLAM2源码无死角解析-(62) BA优化(g2o)→追踪线程:Optimizer::PoseOptimization→仅位姿优化
- 冯诺依曼体系结构与操作系统的理解
- 在DOS中格式化C盘,及在DOS下硬盘安装windows2003系统
- 在线教育行业加速数字化转型,在人工智能新“高途”上升维竞争
- linux红帽分区安装教程,RedHat Linux 9.0 硬盘安装教程手把手全部详细教程
- spring boot 搭建的一个企业级快速开发脚手架
- STM32学习心得十七:窗口看门狗(WWDG)实验及旧知识点复习