PHP入门培训教程PHP培训教程PHP基础教程17常用功能块课件_第1页
PHP入门培训教程PHP培训教程PHP基础教程17常用功能块课件_第2页
PHP入门培训教程PHP培训教程PHP基础教程17常用功能块课件_第3页
PHP入门培训教程PHP培训教程PHP基础教程17常用功能块课件_第4页
PHP入门培训教程PHP培训教程PHP基础教程17常用功能块课件_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、回顾使用正则表达式可以实现字符串的哪些操作?正则表达式中的元字符都有哪些?与Perl兼容的正则表达式都有哪些操作函数?预习检查在PHP程序中错误发生一般归属于哪些领域?写入日志的方式有哪两种,如何配置?什么是UNIX时间戳?我们如何使用date( )函数格式化时间?本章任务1. PHP的错误处理2. PHP的时间和日期1. PHP的错误处理1.1 错误报告级别1.2 调整错误报告级别1.3 使用trigger_error()函数来替代die( )1.4 自定义错误处理1.5 写错误日志1.1 错误报告级别 PHP程序的错误发生一般归属于下列三个领域: 语法错误: 语法错误最常见,并且也容易修复

2、。如:代码中遗漏一个分号。这类错误会阻止脚本的执行。 运行时错误: 这种错误一般不会阻止PHP脚本的执行,但会阻止当前要做的事情。输出一条错误,但php脚本继续执行 逻辑错误: 这种错误最麻烦,既不阻止脚本执行,也不输出错误消息。1.1 错误报告级别 一个异常(后面面向对象时会讲)则是在一个程序执行过程中出现的一个例外,或是一个事件,它中断了正常指令的运行,跳转到其他程序模块继续执行。PHP的错误报错级别级别常量错误值错误报告描述E_ERROR1致命的运行时错误(阻止脚本执行)E_WARNING2运行时警告(非致命性错误)E_PARSE4从语法中解析错误E_NOTICE8运行时注意消息(可能是

3、或可能不是一个问题) E_CORE_ERROR16PHP启动时初始化过程中的致命错误E_CORE_WARNING32PHP启动时初始化过程中的警告(非致命性错)E_COMPILE_ERROR64编译时致命性错 E_COMPILE_WARNING128编译时警告(非致命性错) E_USER_ERROR256用户自定义的致命错误 E_USER_WARNING 512用户自定义的警告(非致命性错误)E_USER_NOTICE1024用户自定义的提醒(经常是bug) E_STRICT2048编码标准化警告(建议如何修改以向前兼容) E_ALL6143所有的错误、警告和注意信息1.2 调整错误报告级别

4、display_errors: 是否开启PHP输出错误报告的功能 值为:On(默认输出错误报告)、 Off(屏蔽所有错误信息) 在PHP脚本中可调用ini_set( )函数,动态设置php.ini配置文件. 如:ini_set(display_errors,On); /显示所有错误信息 error_reporting: 设置不同的错误报告级别。 error_reporting = E_ALL & E_NOTICE - 可以抛出任何非注意的错误,默认值 error_reporting = E_ERROR | E_PARSE | E_CORE_ERROR - 只考虑致命的运行时错误、新解析错误和核

5、心错误。 error_reporting = E_ALL & (E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE) - 报告除用户导致的错误之外的所有错误。 在PHP脚本可以通过error_reporting( )函数动态设置错误报告级别。如:error_reporting(E_ALL); 测试错误报告 测试错误报告 确定PHP错误报告行为的配置指令配置指令默认值描述display_startup_errorsOff是否显示PHP引擎在初始化时遇到的错误log_errorsOff确定日志语句记录位置error_logNull设置错误可以发送到syslo

6、g中log_errors_max_len1024每个日志项的最大长度,以字节为单位,设置0表示指定最大长度。ignore_repeated_errorsOff是否忽略同一个文件、同一行发生的重复错误消息ignore_repeated_sourceOff忽略不同文件中和同一文件中不同行发生的重复错误。track_errorsOff启动该指令会使PHP在$php_errormsg中存储最近发生的错误信息。 1.3 使用trigger_error()函数来替代die() 首先函数die()等同于exit(),两者如果执行都会终止PHP程序,而且可以在退出程序之前输出一些错误报告。trigger_er

7、ror()则可以生成一个用户警告来代替,使程序更具有灵活性。 例如,trigger_error(“没有找到文件”,E_USER_ERROR)。使用trigger_error()函数来替代die(),你的代码在处理错误上会更具优势,对于客户程序员来说更容易处理错误。1.4 自定义错误处理 自定义错误报告的处理方式,可以完全绕过标准的PHP错误处理函数,这样就可以按自己定义的格式打印错误报告,或改变错误报告打印的位置,以下几种情况可以考虑自定义错误处理。 可以记下错误的信息,及时发现一些生产环境出现的问题 可以屏蔽错误。 可以控制错误的输出。 可以作为调试工具。 使用set_error_handl

8、er()函数来设置用户自定义错误处理。?php /* 定义Error_Handler函数, 作为set_error_handler()的第一个参数回调 param int $error_level 错误级别 param string $error_message 错误信息 param string $file 错误所在文件 param int $lin 错误所在行数 */ function error_handler($error_level, $error_message, $file, $line) $EXIT = FALSE; switch( $error_level ) /提醒级别 c

9、ase E_NOTICE: case E_USER_NOTICE : $error_type = Notice; break; /警告级别 case E_WARNING: case E_USER_WARNING: $error_type = Warning; break; /错误级别 case E_ERROR: case E_USER_ERROR: $error_type = Fatal Error; $EXIT = TRUE; break; /其他末知错误 default: $error_type = Unknown; $EXIT = TRUE; break; /直接打印错误信息,也可以写文

10、件或数据库 printf (%s: %s in %s on line %dn, $error_type, $error_message, $file, $line); /若出现错误则跳转到友好错误提示页面 if(TRUE = $EXIT) echo location=er.html ; 通过上面测试代码可以很好解决安全和调试方面的矛盾,但注意E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING是不会被这个句柄处理的,也就是会用原始的方式显示,不过通常情况下不会发生。使用set_error_ha

11、ndler()后,error_reporting()将会失效。也就是所有错误都是由自定义的函数处理。 error_reporting(0); /屏蔽程序中的错误 set_error_handler(error_handler); /这个才是关键点,把错误的处理交给error_handler() echo $novar; /使用末定义的变量要报 notice 的 echo 3/0; /除以0要报警告的 trigger_error(Trigger a fatal error, E_USER_ERROR); /自定义一个错误?1.5 写错误日志两种方式记录错误日志: 使用指定的文件记录错误报告日志

12、错误日志记录到操作系统的日志里使用指定的文件记录错误报告日志1、先配置php.ini: error_reporting = E_ALL/将向PHP发送每个错误 display_errors=Off /不显示错误报告 log_errors=On /决定日志语句记录的位置 log_errors_max_log=1024/ 每个日志项的最大长度 error_log=G:/myerror.log/指定错误写进的文件2、使用函数:在php文件中使用error_log()来记录日志,就可以将信息写入到myerror.log文件中 如:error_log(登录失败了!);使用指定的文件记录错误报告日志错误日

13、志记录到操作系统的日志里1、先配置PHP.ini文件中 error_reporting = E_ALL /将向PHP发送每个错误 display_errors=Off /不显示错误报告 log_errors=On /决定日志语句记录的位置。 log_errors_max_log=1024 / 每个日志项的最大长度 error_log=syslog /指定到系统日志中。2、使用四个函数来记录日志: define_syslog_variables();/为系统日志初始化配置 openlog(); /打开一个日志链接 syslog(); /发送一条日志记录 closelog(); /关闭日志链接错误

14、日志记录到操作系统的日志里 查看日志:如windows系统,通过右击“我的电脑”- 选择管理选项-在系统工具菜单中选择事件查看器-在应用程序选项中即可看到日志了。2. PHP的日期和时间2.1 UNIX时间戳2.2 在PHP中获取日期和时间2.3 修改PHP的默认时区2.4 使用微妙计算PHP脚本执行时间2.1 UNIX时间戳 Unix 时间戳 : 自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数 . 相关函数: time( ): 函数返回一个当前系统的时间戳 mktime( ): 取得一个日期的 Unix 时间戳 格式:int mktime

15、(时,分,秒,月,日,年,is_dst区); 注意:is_dst参数表示是否为夏时制,PHP5.10后此参数已废除。 strtotime( ):将任何英文文本的日期时间描述解析为 Unix 时间戳 格式: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-0

16、4-06 echo date(Y-m-d, strtotime(last monday); /输出: 2012-04-02 $now = strtotime(now); /当前时间 $endtime = strtotime(2014-08-18 08:08:08); /设定毕业时间,转成时间戳 $second = $endtime - $now; /获取毕业时间到现在时间的时间戳(秒数) $year = floor($second/3600/24/365); /从这个时间戳中换算出年头数 $temp = $second - $year*365*24*3600;/从时间戳中去掉整年的秒数,就剩下

17、月份的秒数 $month = floor($temp/3600/24/30); /从这个时间戳中换算出月数 $temp = $temp - $month*30*24*3600; /从时间戳中去掉整月的秒数,就剩下天的秒数 $day = floor($temp/3600/24); /从这个时间戳中换算出剩余的天数 $temp = $temp - $day*3600*24; /从时间戳中去掉整天的秒数,就剩下小时的秒数 $hour = floor($temp/3600); /从这个时间戳中换算出剩余的小时数 $temp = $temp - $hour*3600; /从时间戳中去掉整小时的秒数,就剩

18、下分的秒数 $minute = floor($temp/60); /从这个时间戳中换算出剩余的分数 $second1 = $temp - $minute*60; /最后就只有剩余的秒数了 echo 距离培训毕业还有$year年$month月$day天$hour小时$minute分$second1秒;2.2 在PHP中获取日期和时间 getdate - 取得日期时间信息 格式:array getdate ( int timestamp ) 返回一个根据 timestamp 得出的包含有日期信息的结合数组。如果没有给出时间戳则认为是当前本地时间。数组中的单元如下:2.3 日期和时间的格式化输出 d

19、ate - 格式化一个本地时间日期 格式:string date ( string format , int timestamp ) 返回将整数 timestamp 按照给定的格式字串而产生的字符串。如果没有给出时间戳则使用本地当前时间。换句话说,timestamp 是可选的,默认值为 time()(当前时间戳)。 例如: echo date(“Y年m月d日 H:i:s”); /2010年10月28日 14:22:28 常用参数:Y:四位数年 m:月01-12 n:月1-12 d:天01-31 j:天1-31 H:时24时制 h:小时12制 i:分钟00-59 s:秒00-59 w:星期几0-6A:上午AM或下午PM a:上午am或下午pm。2.4 修改P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论