1、列出五種以上你使用過的PHP 的擴展的名稱 (提示:常用的PHP擴展 , 如 GD 擴展)
PDO、mysql、sybase、oracle、memcache、zlib
2、寫一個函數(shù),用冒泡法實現(xiàn)排序,輸入參數(shù)為一個數(shù)組
function mysort($arr){
for($i=0;$i<strlen($arr);$i++)
{
for($j=$i;$j<strlen($arr);$j++)
{
if($arr[i]>$arr[j])
{
$temp = $arr[i];
$arr[i] = $arr[j];
$arr[j] = $temp;
}
}
}
}
3、請說明 在php.ini 中safe_mode 開啟之后對于PHP系統(tǒng)函數(shù)的影響
chmod() mkdir() touch() chown() chgrp() chdir() fopen() rmdir() copy() link()
exec()
chmod() 檢查被操作的文件或目錄是否與正在執(zhí)行的腳本有相同的 UID(所有者)。 另外,不能設置 SUID、SGID 和 sticky bits
mkdir() 檢查被操作的目錄是否與正在執(zhí)行的腳本有相同的 UID(所有者)。
touch() 檢查被操作的文件或目錄是否與正在執(zhí)行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與正在執(zhí)行的腳本有相同的 UID(所有者)。
chown() 檢查被操作的文件或目錄是否與正在執(zhí)行的腳本有相同的 UID(所有者)。
chgrp() 檢查被操作的文件或目錄是否與正在執(zhí)行的腳本有相同的 UID(所有者)。
chdir() 檢查被操作的目錄是否與正在執(zhí)行的腳本有相同的 UID(所有者)。
fopen() 檢查被操作的目錄是否與正在執(zhí)行的腳本有相同的 UID(所有者)。
rmdir() 檢查被操作的目錄是否與正在執(zhí)行的腳本有相同的 UID(所有者)。
copy() 檢查被操作的文件或目錄是否與正在執(zhí)行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與正在執(zhí)行的腳本有相同的 UID(所有者)。 (on source and target )
link() 檢查被操作的文件或目錄是否與正在執(zhí)行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與正在執(zhí)行的腳本有相同的 UID(所有者)。 (注意:僅測試 target)
exec() 只能在 safe_mode_exec_dir 設置的目錄下進行執(zhí)行操作?;谀承┰颍壳安荒茉诳蓤?zhí)行對象的路徑中使用 ..。escapeshellcmd() 將被作用于此函數(shù)的參數(shù)上。
4、你用什么方法檢查PHP腳本的執(zhí)行效率(通常是腳本執(zhí)行時間)和數(shù)據(jù)庫SQL的效率(通常是數(shù)據(jù)庫Query時間),并定位和分析腳本執(zhí)行和數(shù)據(jù)庫查詢的瓶頸所在?
1.腳本執(zhí)行時間,啟用xdebug,使用WinCacheGrind分析。
2.數(shù)據(jù)庫查詢,mysql使用EXPLAIN分析查詢,啟用slow query log記錄慢查詢。
3, xdebug統(tǒng)計函數(shù)執(zhí)行次數(shù)和具體時間進行分析。
4, 在線系統(tǒng)用strace跟蹤相關進程的具體系統(tǒng)調(diào)用。
5、試簡述php5 中 autoload 機制是如何自動加載類的
當PHP引擎試圖實例化一個未知類的操作時,會調(diào)用__autoload()方法,在PHP出錯失敗前有了最后一個機會加載所需的類。
因此,上面的這段代碼執(zhí)行時,PHP引擎實際上替我們自動執(zhí)行了一次__autoload方法,將User.class.php這個文件包含進來。
在__autoload函數(shù)中拋出的異常不能被catch語句塊捕獲并導致致命錯誤。