|
做過php開發(fā)的程序員應該清楚,php中有很多內(nèi)置的功能,掌握了它們,可以幫助你在做php開發(fā)時更加得心應手,本文將分享8個開發(fā)必備的php功能,個個都非常實用,希望各位php開發(fā)者能夠掌握。
1、傳遞任意數(shù)量的函數(shù)參數(shù)
2、使用glob()查找文件
3、獲取內(nèi)存使用情況信息
4、獲取CPU使用情況信息
5、獲取系統(tǒng)常量
6、生成唯一的id
7、序列化
8、字符串壓縮
1、傳遞任意數(shù)量的函數(shù)參數(shù) 我們在.NET或者Java編程中,一般函數(shù)參數(shù)個數(shù)都是固定的,但是php允許你使用任意個數(shù)的參數(shù)。下面這個示例向你展示了php函數(shù)的默認參數(shù):
復制代碼 代碼如下:
// 兩個默認參數(shù)的函數(shù)
function foo($arg1 = ", $arg2 = ") {
echo "arg1: $arg1/n";
echo "arg2: $arg2/n";
}
foo('hello','world');
/* 輸出:
arg1: hello
arg2: world
*/
foo();
/* 輸出:
arg1:
arg2:
*/
下面這個示例是php的不定參數(shù)用法,其使用到了 func_get_args()方法:
// 是的,形參列表為空
function foo() {
// 取得所有的傳入?yún)?shù)的數(shù)組
$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函數(shù)的函數(shù)名從字面上都可以理解其用途,但是當你看到 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文件和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
)
*/
如果你想得到絕對路徑,你可以調(diào)用 realpath() 函數(shù):
復制代碼 代碼如下:
$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、獲取內(nèi)存使用情況信息 php的內(nèi)存回收機制已經(jīng)非常強大,你也可以使用php腳本獲取當前內(nèi)存的使用情況,調(diào)用memory_get_usage() 函數(shù)獲取當期內(nèi)存使用情況,調(diào)用memory_get_peak_usage() 函數(shù)獲取內(nèi)存使用的峰值。參考代碼如下:
復制代碼 代碼如下:
echo "Initial: ".memory_get_usage()." bytes /n";
/* 輸出
Initial: 361400 bytes
*/
// 使用內(nèi)存
for ($i = 0; $i < 100000; $i++) {
$array []= md5($i);
}
// 刪除一半的內(nè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使用情況信息 獲取了內(nèi)存使用情況,也可以使用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
)
*/
這個結(jié)構(gòu)看上出很晦澀,除非你對CPU很了解。下面一些解釋: ru_oublock: 塊輸出操作 ru_inblock: 塊輸入操作 ru_msgsnd: 發(fā)送的message ru_msgrcv: 收到的message ru_maxrss: 最大駐留集大小 ru_ixrss: 全部共享內(nèi)存大小 ru_idrss:全部非共享內(nèi)存大小 ru_minflt: 頁回收 ru_majflt: 頁失效 ru_nsignals: 收到的信號 ru_nvcsw: 主動上下文切換 ru_nivcsw: 被動上下文切換 ru_nswap: 交換區(qū) ru_utime.tv_usec: 用戶態(tài)時間 (microseconds) ru_utime.tv_sec: 用戶態(tài)時間(seconds) ru_stime.tv_usec: 系統(tǒng)內(nèi)核時間 (microseconds) ru_stime.tv_sec: 系統(tǒng)內(nèi)核時間?(seconds) 要看到你的腳本消耗了多少CPU,我們需要看看"用戶態(tài)的時間"和"系統(tǒng)內(nèi)核時間"的值。秒和微秒部分是分別提供的,您可以把微秒值除以100萬,并把它添加到秒的值后,可以得到有小數(shù)部分的秒數(shù)。
復制代碼 代碼如下:
// 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
*/
是不占用系統(tǒng)時間的,我們可以來看下面的一個例子:
復制代碼 代碼如下:
// 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
*/
這花了大約14秒的CPU時間,幾乎所有的都是用戶的時間,因為沒有系統(tǒng)調(diào)用。傳統(tǒng)時間是CPU花費在系統(tǒng)調(diào)用上的上執(zhí)行內(nèi)核指令的時間。下面是一個例子:
復制代碼 代碼如下:
$start = microtime(true);
// keep calling microtime for about 3 seconds
while(microtime(true)
主站蜘蛛池模板:
国产一区二区高清
|
国产AV国产精品国产三级在线L
|
亚洲国产精品一区二区动图
|
成人免费肉动漫无遮网站
|
韩国精品无码少妇在线观看网站
|
日韩av国产av欧美天堂社区
|
国产成人aaa在线视频免费观看
|
久久人妻AV一区二区软件
|
国产视频精品免费
|
亚洲精品久久国产高清
|
亚洲免费福利在线视频
|
欧美卡1卡2卡三卡2021精品
|
无码人妻精品一区二区蜜桃色欲
|
国产av久久免费观看
|
国产综合在线视频
|
久久精品中文字幕免费
|
亚洲zooz人禽交xxxx
|
奇米狠狠一区二区三区
|
亚洲日本欧美天堂在线
|
99久久国产综合精品
|
午夜在线观看免费观看 视频
|
热99RE久久精品国产
|
久久午夜免费视频
|
国产精品麻豆AV
|
嫩草AV久久伊人妇女
|
湖南张丽大战黑人hd视频
|
日本xxxxxxxxx老师59
|
国产午夜精品理论片
|
男的插曲女的下面免费APP
|
午夜爽喷水无码成人18禁三级
|
欧美在线亚洲综合国产人
|
二级毛片在线观看
|
香蕉尹人综合精品
|
妹妹的第一次有点紧
|
国产精品无码AV天天爽人妻蜜桃
|
与子敌伦刺激对白亂輪亂性
|
国产精品嫩草影视在线观看
|
青柠在线观看免费完整版
|
亚洲va在线va天堂XX xX
|
乌克兰少妇大胆大BBW
|
5G在线观看免费年龄确认18
|