很多時候我們需要計算PHP指令碼的執行時間,來獲知指令碼的效率等問題。比如有一個一大段的PHP指令碼,我們就需要一個分段擷取指令碼執行時間的方法。先介紹要用到的函數:// 計時函數 function runtime($mode = 0) { static $t; if(!$mode) { $t = microtime(); return; } $t1 = microtime(); list($m0,$s0) = split(" ",$t); list($m1
關於php的引用(就是在變數或者函數、對象等前面加上&符號)的作用,我們先看下面這個程式。 "; echo "$b ";$a++; //變數a自增1echo "$a ";echo "$b ";//查看變數b,也增加了1,說明使用的是同一儲存單元?> 程式運行結果: 100 100 101 101
與其他語言不同,PHP不是一種嚴格的類型語言。基本上,這意味著開發人員在使用一個變數前,不必明確地設定這個變數的類型(數字、字串、布爾值)。相反,PHP解釋程式根據儲存在變數中的資訊自動探測變數的類型。
比如要做一個限時購物的功能,這就要做到倒計時,要有即時的倒計時。 要求要有小時分鐘秒的即時倒計時的顯示,使用者端修改日期時間不會影響到倒計時的正常顯示(也就是以伺服器時間為準)。 其實這和很多的考試等系統的時間限制功能同樣的要求。 總不能用ajax每秒都擷取伺服器時間吧,所以即時倒計時一定要用javascript實現。這很簡單,網上一大把的例子。 現在問題是解決使用者端修改日期時間對我們的顯示的影響。
最近感覺網站的資料庫壓力比較大,造成網站的速度下降得很厲害。因為有相當一部分的頁面是直接連接資料庫讀資料的,所以把這部分的頁面也改為使用資料庫單例類來實現。現在基本都統一使用下面這個類來串連資料庫了。 link = mysql_connect($host, $username, $password);$this->query("SET NAMES 'utf8'", $this->link);//echo mysql_errno($this->link) . ": " .
現在有一個跨時區的應用,不同時區登入的使用者需要看到自己時區的時間,同時也要能夠進行時區的切換。 我的思路是,系統中所有儲存的時間都是GMT(UTC)時間,使用者登入時,根據使用者所在的時區進行對應的顯示。 首先瞭解一下PHP中時區的設定方法。PHP中進行設定的方法比較靈活多樣,可以在php.ini中設定date.timezone屬性、可以通過代碼,調用ini_set(‘date.timezone’, ‘’)設定,也可以使用函數
PHP的MySQL持久化串連,美好的目標,卻擁有糟糕的口碑,往往令人敬而遠之。這到底是為啥麼。近距離觀察後發現,這傢伙也不容易啊,要看Apache的臉色,還得聽MySQL指揮。對於作為Apache模組啟動並執行PHP來說,要實現MySQL持久化串連,首先得取決於Apache這個web伺服器是否支援Keep-Alive。Keep-AliveKeep-Alive是什麼東西?它是http協議的一部分,讓我們複習一下沒有Keep-Alive的http請求,從客戶在瀏覽器輸入一個有效url地址開始,瀏覽器
首先要說下編碼問題,如果XML檔案與分頁檔編碼不一致,那麼亂碼會產生。解決中文亂碼問題可以輸出時用以下語句:echo iconv("UTF-8","GBK",$Song_Url); PHP網頁的編碼 php檔案本身的編碼與網頁的編碼應匹配, 如果欲使用gb2312編碼,那麼php要輸出頭:header("Content-Type: text/html; charset=gb2312"),靜態頁面添加,所有檔案的編碼格式為ANSI,可用記事本開啟,另存新檔選擇編碼為ANSI,
帶模板的資訊調用標籤:[萬能標籤](ecmsinfo) 標籤名稱: 帶模板的資訊調用標籤 (sys_GetEcmsInfo) 格式:[ecmsinfo]欄目ID/專題ID, 顯示條數, 標題截取數, 是否顯示欄目名, 操作類型, 模板ID, 只顯示有標題圖片[/ecmsinfo] 參數說明:(帝國模板製作的精髓所在,此標籤實現各種顯示效果。)
緩衝在實際使用當中應用很廣泛,可以減輕對伺服器資料庫的訪問,提高運行速度。目前很多CMS內容管理系統中頻繁使用緩衝機制來提高系統啟動並執行效率。下面是一個寫得不錯的緩衝類,可以參考下緩衝的機制與寫法。cache.php 代碼如下:cachefilevar 及檔案名稱 $this->cachefile //動態網頁的參數不同對應的Cache檔案也不同,但是每一個動態網頁的所有Cache檔案都有相同的檔案名稱,只是副檔名不同 $s=array(".","/");$
PHP的背景恐怕就不用默默贅言了,我相信大家選擇一種語言,並不是看它的背景和悠久曆史,更重要的是看它的實用性,華而不實的語言哪怕是再輝煌的曆史,也畢將步向沒落,可喜的是PHP經受住了考驗,也因此,它確實是一種值得學習的語言。 學習PHP的一般過程:
使用PHP的cURL庫可以簡單和有效地去抓網頁。你只需要運行一個指令碼,然後分析一下你所抓取的網頁,然後就可以以程式的方式得到你想要的資料了。無論是你想從從一個連結上取部分資料,或是取一個XML檔案並把其匯入資料庫,那怕就是簡單的擷取網頁內容,cURL 是一個功能強大的PHP庫。PHP中的CURL函數庫(Client URL Library Function)常用函數如下:curl_close — 關閉一個curl會話curl_copy_handle —
插入排序(Insertion Sort),選擇排序(Selection Sort),冒泡排序和快速排序是我們經常會用到的排序演算法。下面是這幾種演算法的基本思想和相對應的PHP實現代碼。 插入排序(Insertion Sort)的基本思想是:每次將一個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。 //插入排序(一維數組)function insert_sort($arr){ $count = count($arr);
對於JSON(JavaScript Object Notation)大家應該不陌生,它是一種輕量級的資料交換格式。易於人閱讀和編寫。同時也易於機器解析和產生。它基於JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集。JSON採用完全獨立於語言的文字格式設定,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl,
Thinkphp內建了一個可以媲美smarty的模板引擎,給我們帶來了很大的方便。調用函數也一樣,可以和smarty一樣調用自己需要的函數,而官方也內建了一些常用的函數供大家調用。比如今天我們說的截取字串函數,在thinkphp模板引擎裡可以這樣寫:{$vo.title|msubstr=0,5,’utf-8′,false} 至於{$vo.title}這個大家肯定不陌生了。就說說後邊的函數msubstr吧。它代表的意思是截取字串$vo.title,從0個字元開始截取,截取5個字元。使用的是utf-
static關鍵字在C#編程中非常常見,它用來修飾符聲明屬於類型本身而不是屬於特定對象的靜態成員。static 修飾符可用於類、欄位、方法、屬性、運算子、事件和建構函式,但不能用於索引器、解構函式或類以外的類型。聲明為static的類、函數和變數將不能引用執行個體方法或變數,另外在C#中一旦類被添加了static修飾符,則其內部所有變數和方法都必須是靜態。靜態變數和方法必須通過類名進行引用而不能通過執行個體對象引用。 那麼static關鍵字在php中與C#中都有些什麼不同呢?
JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。 簡而論之,不管是xml還是json都是為了方便在用戶端與伺服器端互動資料的中轉站,特別是用於對象型資料,比如最常見的數組。 下面將分別將數組從php傳送給javascript,以及將數組從javascript傳送給php樣本說明,例子比較簡單,明白概念即可。不管從php傳送給javascript,還是javascript傳送給php,json在傳送之前都會將對象扁平化即一維化為字串。
在之前文章中,介紹了 PHP 中 header() 函數的一些情況,這裡再補充一下吧。 下面是關於header函數的詳細使用說明: 不管頁面有多少 header,它會執行最後一個,不過是有條件的,例如: header('Location:http://www.bkjia.com'); header('Location:http://www.g.cn'); header('Location:http://www.baidu.com'); 這個就會跳到百度
PHP 5 添加了類似於其它語言的異常處理模組。在 PHP 代碼中所產生的異常可被 throw 語句拋出並被 catch 語句捕獲。需要進行異常處理的代碼都必須放入 try 代碼塊內,以便捕獲可能存在的異常。每一個 try 至少要有一個與之對應的 catch。使用多個 catch 可以捕獲不同的類所產生的異常。當 try 代碼塊不再拋出異常或者找不到 catch 能匹配所拋出的異常時,PHP 代碼就會在跳轉到最後一個 catch 的後面繼續執行。當然,PHP 允許在 catch
PHP可以從很多細節部分去提高執行效率,下面來個匯總。 靜態調用的成員一定要定義成 static (PHP5 ONLY) PHP 5 引入了靜態成員的概念,作用和 PHP 4 的函數內部靜態變數一致,但前者是作為類的成員來使用。靜態變數和 Ruby 的類變數(class variable)差不多,所有類的執行個體共用同一個靜態變數。 bar();// static wayfoo::bar();?> 靜態地調用非 static 成員,效率會比靜態地調用