天天看點

九個PHP很有用的功能

下面是九個php中很有用的功能,不知道你用過了嗎?

你可能知道php允許你定義一個預設參數的函數。但你可能并不知道php還允許你定義一個完全任意的參數的函數

下面是一個示例向你展示了預設參數的函數:

你還可以查找多種字尾名

你還可以加上路徑:

觀察你程式的記憶體使用能夠讓你更好的優化你的代碼。

這個結構看上出很晦澀,除非你對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。

(__namespace__),很像c語言。

我們可以以為這些東西主要是用于調試,當也不一定,比如我們可以在include其它檔案的時候使用?__file__ (當然,你也可以在 php 5.3以後使用 __dir__ ),下面是一個例子。

下面是使用 __line__ 來輸出一些debug的資訊,這樣有助于你調試程式:

有很多人使用 md5() 來生成一個唯一的id,如下所示:

可能你會注意到生成出來的id前幾位是一樣的,這是因為生成器依賴于系統的時間,這其實是一個非常不錯的功能,因為你是很容易為你的這些id排序的。這點md5是做不到的。

你還可以加上字首避免重名:

而且,生成出來的id會比md5生成的要短,這會讓你節省很多空間。

這是php的原生函數,然而在今天json越來越流行,是以在php5.2以後,php開始支援json,你可以使用 json_encode() 和 json_decode() 函數

這看起來更為緊湊一些了,而且還相容于javascript和其它語言。但是對于一些非常複雜的資料結構,可能會造成資料丢失。

而當我們使用了register_shutdown_function()後,你的程式就算是在腳本被停止後也會被運作: