(附加四)PHP常用功能塊.ppt_第1頁(yè)
(附加四)PHP常用功能塊.ppt_第2頁(yè)
(附加四)PHP常用功能塊.ppt_第3頁(yè)
(附加四)PHP常用功能塊.ppt_第4頁(yè)
(附加四)PHP常用功能塊.ppt_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

附加四 PHP常用功能模塊,預(yù)習(xí)檢查,在PHP程序中錯(cuò)誤發(fā)生一般歸屬于哪些領(lǐng)域? 寫(xiě)入日志的方式有哪兩種,如何配置? 什么是UNIX時(shí)間戳? 我們?nèi)绾问褂胐ate( )函數(shù)格式化時(shí)間?,本章任務(wù),1. PHP的錯(cuò)誤處理 2. PHP的時(shí)間和日期,1. PHP的錯(cuò)誤處理,1.1 錯(cuò)誤報(bào)告級(jí)別 1.2 調(diào)整錯(cuò)誤報(bào)告級(jí)別 1.3 使用trigger_error()函數(shù)來(lái)替代die( ) 1.4 自定義錯(cuò)誤處理 1.5 寫(xiě)錯(cuò)誤日志,1.1 錯(cuò)誤報(bào)告級(jí)別,PHP程序的錯(cuò)誤發(fā)生一般歸屬于下列三個(gè)領(lǐng)域: 語(yǔ)法錯(cuò)誤: 語(yǔ)法錯(cuò)誤最常見(jiàn),并且也容易修復(fù)。如:代碼中遺漏一個(gè)分號(hào)。這類(lèi)錯(cuò)誤會(huì)阻止腳本的執(zhí)行。 運(yùn)行時(shí)錯(cuò)誤: 這種錯(cuò)誤一般不會(huì)阻止PHP腳本的執(zhí)行,但會(huì)阻止當(dāng)前要做的事情。輸出一條錯(cuò)誤,但php腳本繼續(xù)執(zhí)行 邏輯錯(cuò)誤: 這種錯(cuò)誤最麻煩,既不阻止腳本執(zhí)行,也不輸出錯(cuò)誤消息。 一個(gè)異常(后面面向?qū)ο髸r(shí)會(huì)講)則是在一個(gè)程序執(zhí)行過(guò)程中出現(xiàn)的一個(gè)例外,或是一個(gè)事件,它中斷了正常指令的運(yùn)行,跳轉(zhuǎn)到其他程序模塊繼續(xù)執(zhí)行。,PHP的錯(cuò)誤報(bào)錯(cuò)級(jí)別,1.2 調(diào)整錯(cuò)誤報(bào)告級(jí)別,display_errors: 是否開(kāi)啟PHP輸出錯(cuò)誤報(bào)告的功能 值為:On(默認(rèn)輸出錯(cuò)誤報(bào)告)、 Off(屏蔽所有錯(cuò)誤信息) 在PHP腳本中可調(diào)用ini_set( )函數(shù),動(dòng)態(tài)設(shè)置php.ini配置文件. 如:ini_set(“display_errors“,“On“); /顯示所有錯(cuò)誤信息 error_reporting: 設(shè)置不同的錯(cuò)誤報(bào)告級(jí)別。 error_reporting = E_ALL , 測(cè)試錯(cuò)誤報(bào)告 測(cè)試錯(cuò)誤報(bào)告 ,確定PHP錯(cuò)誤報(bào)告行為的配置指令,1.3 使用trigger_error()函數(shù)來(lái)替代die(),首先函數(shù)die()等同于exit(),兩者如果執(zhí)行都會(huì)終止PHP程序,而且可以在退出程序之前輸出一些錯(cuò)誤報(bào)告。trigger_error()則可以生成一個(gè)用戶(hù)警告來(lái)代替,使程序更具有靈活性。 例如,trigger_error(“沒(méi)有找到文件”,E_USER_ERROR)。使用trigger_error()函數(shù)來(lái)替代die(),你的代碼在處理錯(cuò)誤上會(huì)更具優(yōu)勢(shì),對(duì)于客戶(hù)程序員來(lái)說(shuō)更容易處理錯(cuò)誤。,1.4 自定義錯(cuò)誤處理,自定義錯(cuò)誤報(bào)告的處理方式,可以完全繞過(guò)標(biāo)準(zhǔn)的PHP錯(cuò)誤處理函數(shù),這樣就可以按自己定義的格式打印錯(cuò)誤報(bào)告,或改變錯(cuò)誤報(bào)告打印的位置,以下幾種情況可以考慮自定義錯(cuò)誤處理。 可以記下錯(cuò)誤的信息,及時(shí)發(fā)現(xiàn)一些生產(chǎn)環(huán)境出現(xiàn)的問(wèn)題 可以屏蔽錯(cuò)誤。 可以控制錯(cuò)誤的輸出。 可以作為調(diào)試工具。 使用set_error_handler()函數(shù)來(lái)設(shè)置用戶(hù)自定義錯(cuò)誤處理。,%s: %s in %s on line %dn“, $error_type, $error_message, $file, $line); /若出現(xiàn)錯(cuò)誤則跳轉(zhuǎn)到友好錯(cuò)誤提示頁(yè)面 if(TRUE = $EXIT) echo location=“er.html“ ; ,通過(guò)上面測(cè)試代碼可以很好解決安全和調(diào)試方面的矛盾,但注意 E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING是不會(huì)被這個(gè)句柄處理的,也就是會(huì)用原始的方式顯示,不過(guò)通常情況下不會(huì)發(fā)生。 使用set_error_handler()后,error_reporting()將會(huì)失效。也就是所有錯(cuò)誤都是由自定義的函數(shù)處理。,error_reporting(0); /屏蔽程序中的錯(cuò)誤 set_error_handler(error_handler); /這個(gè)才是關(guān)鍵點(diǎn),把錯(cuò)誤的處理交給error_handler() echo $novar; /使用末定義的變量要報(bào) notice 的 echo 3/0; /除以0要報(bào)警告的 trigger_error(Trigger a fatal error, E_USER_ERROR); /自定義一個(gè)錯(cuò)誤 ?,1.5 寫(xiě)錯(cuò)誤日志,兩種方式記錄錯(cuò)誤日志: 使用指定的文件記錄錯(cuò)誤報(bào)告日志 錯(cuò)誤日志記錄到操作系統(tǒng)的日志里,使用指定的文件記錄錯(cuò)誤報(bào)告日志,1、先配置php.ini: error_reporting = E_ALL/將向PHP發(fā)送每個(gè)錯(cuò)誤 display_errors=Off /不顯示錯(cuò)誤報(bào)告 log_errors=On /決定日志語(yǔ)句記錄的位置 log_errors_max_log=1024/ 每個(gè)日志項(xiàng)的最大長(zhǎng)度 error_log=G:/myerror.log /指定錯(cuò)誤寫(xiě)進(jìn)的文件 2、使用函數(shù):在php文件中使用error_log()來(lái)記錄日志,就可以將信息寫(xiě)入到myerror.log文件中 如:error_log(“登錄失敗了!“);,使用指定的文件記錄錯(cuò)誤報(bào)告日志,錯(cuò)誤日志記錄到操作系統(tǒng)的日志里,1、先配置PHP.ini文件中 error_reporting = E_ALL /將向PHP發(fā)送每個(gè)錯(cuò)誤 display_errors=Off /不顯示錯(cuò)誤報(bào)告 log_errors=On /決定日志語(yǔ)句記錄的位置。 log_errors_max_log=1024 / 每個(gè)日志項(xiàng)的最大長(zhǎng)度 error_log=syslog /指定到系統(tǒng)日志中。 2、使用四個(gè)函數(shù)來(lái)記錄日志: define_syslog_variables();/為系統(tǒng)日志初始化配置 openlog(); /打開(kāi)一個(gè)日志鏈接 syslog(); /發(fā)送一條日志記錄 closelog(); /關(guān)閉日志鏈接,錯(cuò)誤日志記錄到操作系統(tǒng)的日志里,查看日志: 如windows系統(tǒng),通過(guò)右擊“我的電腦”- 選擇管理選項(xiàng)-在系統(tǒng)工具菜單中選擇事件查看器-在應(yīng)用程序選項(xiàng)中即可看到日志了。,2. PHP的日期和時(shí)間,2.1 UNIX時(shí)間戳 2.2 在PHP中獲取日期和時(shí)間 2.3 修改PHP的默認(rèn)時(shí)區(qū) 2.4 使用微妙計(jì)算PHP腳本執(zhí)行時(shí)間,2.1 UNIX時(shí)間戳,Unix 時(shí)間戳 : 自從 Unix 紀(jì)元(格林威治時(shí)間 1970 年 1 月 1 日 00:00:00)到當(dāng)前時(shí)間的秒數(shù) . 相關(guān)函數(shù): time( ): 函數(shù)返回一個(gè)當(dāng)前系統(tǒng)的時(shí)間戳 mktime( ): 取得一個(gè)日期的 Unix 時(shí)間戳 格式:int mktime(時(shí),分,秒,月,日,年,is_dst區(qū)); 注意:is_dst參數(shù)表示是否為夏時(shí)制,PHP5.10后此參數(shù)已廢除。 strtotime( ):將任何英文文本的日期時(shí)間描述解析為 Unix 時(shí)間戳 格式:int strtotime ( string $time , int $now ),?php echo date(“Y-m-d“, strtotime(“now“); /輸出: 2012-04-05 echo date(“Y-m-d“, strtotime(“8 may 2012“); /輸出: 2012-05-08 echo date(“Y-m-d“, strtotime(“+1 day“); /輸出: 2012-04-06 echo date(“Y-m-d“, strtotime(“l(fā)ast monday“); /輸出: 2012-04-02 $now = strtotime(“now“); /當(dāng)前時(shí)間 $endtime = strtotime(“2014-08-18 08:08:08“); /設(shè)定畢業(yè)時(shí)間,轉(zhuǎn)成時(shí)間戳 $second = $endtime - $now; /獲取畢業(yè)時(shí)間到現(xiàn)在時(shí)間的時(shí)間戳(秒數(shù)) $year = floor($second/3600/24/365); /從這個(gè)時(shí)間戳中換算出年頭數(shù) $temp = $second - $year*365*24*3600;/從時(shí)間戳中去掉整年的秒數(shù),就剩下月份的秒數(shù) $month = floor($temp/3600/24/30); /從這個(gè)時(shí)間戳中換算出月數(shù) $temp = $temp - $month*30*24*3600; /從時(shí)間戳中去掉整月的秒數(shù),就剩下天的秒數(shù) $day = floor($temp/3600/24); /從這個(gè)時(shí)間戳中換算出剩余的天數(shù) $temp = $temp - $day*3600*24; /從時(shí)間戳中去掉整天的秒數(shù),就剩下小時(shí)的秒數(shù) $hour = floor($temp/3600); /從這個(gè)時(shí)間戳中換算出剩余的小時(shí)數(shù) $temp = $temp - $hour*3600; /從時(shí)間戳中去掉整小時(shí)的秒數(shù),就剩下分的秒數(shù) $minute = floor($temp/60); /從這個(gè)時(shí)間戳中換算出剩余的分?jǐn)?shù) $second1 = $temp - $minute*60; /最后就只有剩余的秒數(shù)了 echo “距離培訓(xùn)畢業(yè)還有$year年$month月$day天$hour小時(shí)$minute分$second1秒“;,2.2 在PHP中獲取日期和時(shí)間,getdate - 取得日期時(shí)間信息 格式:array getdate ( int timestamp ) 返回一個(gè)根據(jù) timestamp 得出的包含有日期信息的結(jié)合數(shù)組。如果沒(méi)有給出時(shí)間戳則認(rèn)為是當(dāng)前本地時(shí)間。數(shù)組中的單元如下:,2.3 日期和時(shí)間的格式化輸出,date - 格式化一個(gè)本地時(shí)間日期 格式:string date ( string format , int timestamp ) 返回將整數(shù) timestamp 按照給定的格式字串而產(chǎn)生的字符串。如果沒(méi)有給出時(shí)間戳則使用本地當(dāng)前時(shí)間。換句話說(shuō),timestamp 是可選的,默認(rèn)值為 time()(當(dāng)前時(shí)間戳)。 例如: echo date(“Y年m月d日 H:i:s”); /2010年10月28日 14:22:28 常用參數(shù): Y:四位數(shù)年 m:月01-12 n:月1-12 d:天01-31 j:天1-31 H:時(shí)24時(shí)制 h:小時(shí)12制 i:分鐘00-59 s:秒00-59 w:星期幾0-6 A:上午AM或下午PM a:上午am或下午pm。,2.4 修改PHP的默認(rèn)時(shí)區(qū),修改PHP的默認(rèn)時(shí)區(qū)有兩種方式: 1、修php.ini配置文件: date.timezone = Etc/GMT+8 2、date_default_timezone_set( ): - 設(shè)定用于一個(gè)腳本中所有日期時(shí)間函數(shù)的默認(rèn)時(shí)區(qū) 。 如:date_default_timezone_set(“PRC”); /中國(guó)時(shí)區(qū)。 date_default_timezone_get( ): - 獲取當(dāng)前時(shí)區(qū),2.5 使用微秒計(jì)算PHP腳本執(zhí)行時(shí)間,microtime - 返回當(dāng)前 Unix 時(shí)間戳和微秒數(shù) 格式:mixed microtime ( bool get_as_float ) microtime() 當(dāng)前 Unix 時(shí)間戳以及微秒數(shù)。本函數(shù)僅在支持 gettimeofday() 系統(tǒng)調(diào)用的操作系統(tǒng)下可用。 如果調(diào)用時(shí)不帶可選參數(shù),本函數(shù)以 “msec sec“ 的格式返回一個(gè)字符串,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論