下面是九個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()後,你的程式就算是在腳本被停止後也會被運作: