懶惰是金 介紹幾個php通用的函數(shù)
更新時間:2008年04月23日 23:18:37 作者:
PHP是一門高效的網(wǎng)絡(luò)編程語言,由于它具有編寫靈活、運行快速等優(yōu)點,迅速成為Web程序員的首選語言。前不久的一份權(quán)威調(diào)查表明,現(xiàn)在已經(jīng)有31.6%的網(wǎng)站使用PHP作為主要的服務(wù)器端編程語言。
3. 控制Log信息的函數(shù)
調(diào)試PHP程序的另外一種重要的方法就是查看Log信息。如果能夠方便地控制Log信息的級別以及Log信息的顯示內(nèi)容,將會給程序調(diào)試帶來更多的便利。下面的幾個函數(shù)可以方便地實現(xiàn)這個功能。
$ss_log_level = 0;
$ss_log_filename = /tmp/ss-log;
$ss_log_levels = array(
NONE => 0,
ERROR => 1,
INFO => 2,
DEBUG => 3);
function ss_log_set_level ($level = ERROR) {
global $ss_log_level;
$ss_log_level = $level;
}
function ss_log ($level, $message) {
global $ss_log_level, $ss-log-filename;
if ($ss_log_levels[$ss_log_level] < $ss_log_levels[$level]) {
// 不顯示Log信息
return false;
}
$fd = fopen($ss_log_filename, "a+");
fputs($fd, $level. - [.ss_timestamp_pretty().] - .$message."n");
fclose($fd);
return true;
}
function ss_log_reset () {
global $ss_log_filename;
@unlink($ss_log_filename);
}
在上面的函數(shù)中,有四個Log級別變量。運行PHP程序時,只有當(dāng)Log的級別低于預(yù)設(shè)的級別值時,Log信息才可以被記錄和顯示出來。例如,在程序中加入如下的一條語句:
ss_log_set_level(INFO);
那么,運行PHP程序時,只有ERROR和INFO級別的LOG信息才能被記錄和顯示出來,DEBUG級的信息則被忽略了。除此之外,我們還可以設(shè)定顯示的信息內(nèi)容,其語句如下:
ss_log(ERROR, "testing level ERROR");
ss_log(INFO, "testing level INFO");
ss_log(DEBUG, "testing level DEBUG");
你也可以隨時使用下面的語句清空LOG信息:
ss_log_reset();
4.速度測試函數(shù)
為了優(yōu)化代碼,我們需要一種可以測試代碼運行時間的方法,從而來選擇最優(yōu)的代碼。下面的函數(shù)可以測試運行代碼所需的時間:
function ss_timing_start ($name = default) {
global $ss_timing_start_times;
$ss_timing_start_times[$name] = explode( , microtime());
}
function ss_timing_stop ($name = default) {
global $ss_timing_stop_times;
$ss_timing_stop_times[$name] = explode(, microtime());
}
function ss_timing_current ($name = default) {
global $ss_timing_start_times, $ss_timing_stop_times;
if (!isset($ss_timing_start_times[$name])) {
return 0;
}
if (!isset($ss_timing_stop_times[$name])) {
$stop_time = explode(, microtime());
}
else {
$stop_time = $ss_timing_stop_times[$name];
}
$current = $stop_time[1] -$ss_timing_start_times[$name][1];
$current += $stop_time[0] -$ss_timing_start_times[$name][0];
return $current;
}
現(xiàn)在可以輕松地檢查任何一段代碼的執(zhí)行時間了,甚至我們可以同時使用多個計時器,只需在使用上述的幾個函數(shù)時設(shè)定不同的參數(shù)作為計時器的名稱就可以了。
5.調(diào)試和優(yōu)化數(shù)據(jù)庫的操作
對于數(shù)據(jù)庫來說,運行速度是至關(guān)重要的。盡管很多書籍和文章都講授了一些快速運行數(shù)據(jù)庫的方法,但是所有的方法都必須經(jīng)過實踐的檢驗。下面我們將把PHPLib函數(shù)庫中的query()函數(shù)和上面介紹的幾個函數(shù)綜合起來編寫成新的query()函數(shù),和原先的函數(shù)相比,這個函數(shù)增加了運行時間的監(jiān)測功能。
function query($Query_String, $halt_on_error = 1) {
$this->connect();
ss_timing_start();
$this->Query_ID = @mysql_query($Query_String,$this->Link_ID);
ss_timing_stop();
ss_log(INFO, ss_timing_current(). Secs - .$Query_String);
$this->Row = 0;
$this->Errno = mysql_errno();
$this->Error = mysql_error();
if ($halt_on_error && !$this->Query_ID) {
$this->halt("Invalid SQL: ".$Query_String);
}
return $this->Query_ID;
}
相關(guān)文章
php中ob(Output Buffer 輸出緩沖)函數(shù)使用方法
php中ob(Output Buffer 輸出緩沖)函數(shù)使用方法...2007-07-07PHP函數(shù)實現(xiàn)從一個文本字符串中提取關(guān)鍵字的方法
這篇文章主要介紹了PHP函數(shù)實現(xiàn)從一個文本字符串中提取關(guān)鍵字的方法,涉及php針對字符串的遍歷與查找等操作技巧,需要的朋友可以參考下2015-07-07