做过@R_301_461@开发的程序员应该清楚,@R_301_461@中有很多内置的功能,掌握了它们,可以帮助你在做@R_301_461@开发时更加得心应手,本文将分享8个开发必备的@R_301_461@功能,个个都非常实用,希望各位@R_301_461@开发者能够掌握。
1、传递任意数量的函数参数
我们在.NET或者JAVA编程中,一般函数参数个数都是固定的,但是@R_301_461@允许你使用任意个数的参数。下面这个示例向你展示了@R_301_461@函数的默认参数:
下面这个示例是@R_301_461@的不定参数用法,其使用到了?func_get_args()方法:
2、使用glob()查找文件
大部分@R_301_461@函数的函数名从字面上都可以理解其用途,但是当你看到?glob() 的时候,你也许并不知道这是用来做什么的,其实glob()和scandir() 一样,可以用来查找文件,请看下面的用法:
/* 输出:
Array
(
[0] => @R301461@test.@R301461@
[1] => pi.@R301_461@
[2] => postoutput.@R301461@
[3] => test.@R301_461@
)
*/
你还可以查找多种后缀名
/* 输出:
Array
(
[0] => @R301461@test.@R301461@
[1] => pi.@R301_461@
[2] => postoutput.@R301461@
[3] => test.@R301_461@
[4] => log.txt
[5] => test.txt
)
*/
你还可以加上路径:
如果你想得到绝对路径,你可以调用?realpath() 函数:
3、获取内存使用情况信息
@R_301_461@的内存回收机制已经非常强大,你也可以使用@R_301_461@脚本获取当前内存的使用情况,调用memory_get_usage() 函数获取当期内存使用情况,调用memory_get_peak_usage() 函数获取内存使用的峰值。参考代码如下:
4、获取cpu使用情况信息
获取了内存使用情况,也可以使用@R_301_461@的getrusage()获取cpu使用情况,该方法在windows下不可用。
这个结构看上出很晦涩,除非你对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) 要看到你的脚本消耗了多少cpu,我们需要看看“用户态的时间”和“系统内核时间”的值。秒和微秒部分是分别提供的,您可以把微秒值除以100万,并把它添加到秒的值后,可以得到有小数部分的秒数。
sleep是不占用系统时间的,我们可以来看下面的一个例子:
这花了大约14秒的cpu时间,几乎所有的都是用户的时间,因为没有系统调用。
系统时间是cpu花费在系统调用上的上执行内核指令的时间。下面是一个例子:
我们可以看到上面这个例子更耗cpu。
5、获取系统常量
@R_301_461@ 提供非常有用的系统常量 可以让你得到当前的行号 (__LINE__),文件 (__FILE__),目录 (__DIR__),函数名 (__FUNCTION__),类名(__CLASS__),方法名(__METHOD__) 和名字空间 (__NAMESPACE__),很像C语言。
我们可以以为这些东西主要是用于调试,当也不一定,比如我们可以在include其它文件的时候使用?__FILE__ (当然,你也可以在 @R_301_461@ 5.3以后使用 __DIR__ ),下面是一个例子。
下面是使用 __LINE__ 来输出一些debug的信息,这样有助于你调试程序:
6、生成唯一的id
很多朋友都利用md5()来生成唯一的编号,但是md5()有几个缺点:1、无序,导致数据库中排序性能下降。2、太长,需要更多的存储空间。其实@R_301_461@中自带一个函数来生成唯一的id,这个函数就是uniqid()。下面是用法:
该算法是根据cpu时间戳来生成的,所以在相近的时间段内,id前几位是一样的,这也方便id的排序,如果你想更好的避免重复,可以在id前加上前缀,如:
7、序列化
@R_301_461@序列化功能大家可能用的比较多,也比较常见,当你需要把数据存到数据库或者文件中是,你可以利用@R_301_461@中的serialize() 和 unserialize()方法来实现序列化和反序列化,代码如下:
如何序列化成json格式呢,放心,@R_301_461@也已经为你做好了,使用@R_301_461@ 5.2以上版本的用户可以使用json_encode() 和 json_decode() 函数来实现json格式的序列化,代码如下:
8、字符串压缩
当我们说到压缩,我们可能会想到文件压缩,其实,字符串也是可以压缩的。@R_301_461@提供了?gzcompress() 和 gzuncompress() 函数:
几乎有50% 压缩比率。同时,你还可以使用?gzencode() 和 gzdecode() 函数来压缩,只不用其用了不同的压缩算法。
原文链接:https://www.f2er.com/php/23073.html