(附加四)PHP常用功能块.ppt_第1页
(附加四)PHP常用功能块.ppt_第2页
(附加四)PHP常用功能块.ppt_第3页
(附加四)PHP常用功能块.ppt_第4页
(附加四)PHP常用功能块.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

附加四 PHP常用功能模块 预习检查 v在PHP程序中错误发生一般归属于哪些领域? v写入日志的方式有哪两种,如何配置? v什么是UNIX时间戳? v我们如何使用date( )函数格式化时间? 本章任务 v1. PHP的错误处理 v2. PHP的时间和日期 1. PHP的错误处理 1.1 错误报告级别 1.2 调整错误报告级别 1.3 使用trigger_error()函数来替代die( ) 1.4 自定义错误处理 1.5 写错误日志 1.1 错误报告级别 vPHP程序的错误发生一般归属于下列三个领域: 语法错误: n语法错误最常见,并且也容易修复。如:代码中遗漏一个分 号。这类错误会阻止脚本的执行。 运行时错误: n这种错误一般不会阻止PHP脚本的执行,但会阻止当前要做 的事情。输出一条错误,但php脚本继续执行 逻辑错误: n这种错误最麻烦,既不阻止脚本执行,也不输出错误消息。 v一个异常(后面面向对象时会讲)则是在一个程序执行过程中出现 的一个例外,或是一个事件,它中断了正常指令的运行,跳转到其 他程序模块继续执行。 PHP的错误报错级别 级别常量错误值错误报告描述 E_ERROR1致命的运行时错误(阻止脚本执行) E_WARNING2运行时警告(非致命性错误) E_PARSE4从语法中解析错误 E_NOTICE8运行时注意消息(可能是或可能不是一个问题) 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 调整错误报告级别 vdisplay_errors: 是否开启PHP输出错误报告的功能 值为:On(默认输出错误报告)、 Off(屏蔽所有错误信息) 在PHP脚本中可调用ini_set( )函数,动态设置php.ini配置文件. 如:ini_set(“display_errors“,“On“); /显示所有错误信息 verror_reporting: 设置不同的错误报告级别。 error_reporting = E_ALL 测试错误报测试错误报 告 测试错误报测试错误报 告 确定PHP错误报告行为的配置指令 配置指令默认值描述 display_startup_errorsOff是否显示PHP引擎在初始化时遇到的错误 log_errorsOff确定日志语句记录位置 error_logNull设置错误可以发送到syslog中 log_errors_max_len1024每个日志项的最大长度,以字节为单位, 设置0表示指定最大长度。 ignore_repeated_errorsOff是否忽略同一个文件、同一行发生的重复 错误消息 ignore_repeated_sourceOff忽略不同文件中和同一文件中不同行发生 的重复错误。 track_errorsOff启动该指令会使PHP在$php_errormsg中存 储最近发生的错误信息。 1.3 使用trigger_error()函数来替代die() v首先函数die()等同于exit(),两者如果执行都会终 止PHP程序,而且可以在退出程序之前输出一些错误报告 。trigger_error()则可以生成一个用户警告来代替, 使程序更具有灵活性。 v例如,trigger_error(“没有找到文件”, E_USER_ERROR)。使用trigger_error()函数来替代die (),你的代码在处理错误上会更具优势,对于客户程序 员来说更容易处理错误。 1.4 自定义错误处理 v自定义错误报告的处理方式,可以完全绕过标准的PHP错误 处理函数,这样就可以按自己定义的格式打印错误报告,或 改变错误报告打印的位置,以下几种情况可以考虑自定义错 误处理。 可以记下错误的信息,及时发现一些生产环境出现的问题 可以屏蔽错误。 可以控制错误的输出。 可以作为调试工具。 v使用set_error_handler()函数来设置用户自定义错误处理 。 v通过上面测试代码可以很好解决安全和调试方面的矛盾,但注意 E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、 E_COMPILE_ERROR、E_COMPILE_WARNING是不会被这个句柄处理的,也 就是会用原始的方式显示,不过通常情况下不会发生。 使用set_error_handler()后,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 写错误日志 v两种方式记录错误日志: 使用指定的文件记录错误报告日志 错误日志记录到操作系统的日志里 使用指定的文件记录错误报告日志 v1、先配置php.ini: error_reporting = E_ALL/将向PHP发送每个错误 display_errors=Off /不显示错误报告 log_errors=On /决定日志语句记录的位置 log_errors_max_log=1024/ 每个日志项的最大长度 error_log=G:/myerror.log /指定错误写进的文件 v2、使用函数:在php文件中使用error_log()来记录日志, 就可以将信息写入到myerror.log文件中 如:error_log(“登录失败了!“); 使用指定的文件记录错误报告日志 错误日志记录到操作系统的日志里 v1、先配置PHP.ini文件中 error_reporting = E_ALL /将向PHP发送每个错误 display_errors=Off /不显示错误报告 log_errors=On /决定日志语句记录的位置。 log_errors_max_log=1024 / 每个日志项的最大长度 error_log=syslog /指定到系统日志中。 v2、使用四个函数来记录日志: define_syslog_variables();/为系统日志初始化配置 openlog(); /打开一个日志链接 syslog(); /发送一条日志记录 closelog(); /关闭日志链接 错误日志记录到操作系统的日志里 v查查看日志: 如windows系统,通过右击“我的电脑 ”- 选择 管理选项 - 在系统工具菜单中选择 事件查看器-在应用程序选项 中即可看 到日志了。 2. PHP的日期和时间 2.1 UNIX时间戳 2.2 在PHP中获取日期和时间 2.3 修改PHP的默认时区 2.4 使用微妙计算PHP脚本执行时间 2.1 UNIX时间戳 vUnix 时间戳 : 自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数 . v相关函数: time( ): 函数返回一个当前系统的时间戳 mktime( ): 取得一个日期的 Unix 时间戳 n格式:int mktime(时,分,秒,月,日,年,is_dst区); n注意:is_dst参数表示是否为夏时制,PHP5.10后此参数已废除。 strtotime( ):将任何英文文本的日期时间描述解析为 Unix 时间戳 n格式: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(“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;/从时间 戳中去掉整年的秒数,就剩下月份的秒数 $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; /从时间 戳中去掉整小时的秒数,就剩下分的秒数 $minute = floor($temp/60); /从这个时间 戳中换算出剩余的分数 $second1 = $temp - $minute*60; /最后就只有剩余的秒数了 echo “距离培训毕业还 有$year年$month月$day天$hour小时$minute分$second1秒“; 2.2 在PHP中获取日期和时间 vgetdate - 取得日期时间信息 格式:array getdate ( int timestamp ) 返回一个根据 timestamp 得出的包含有日期信息的结合数组。如 果没有给出时间戳则认为是当前本地时间。数组中的单元如下: 2.3 日期和时间的格式化输出 vdate - 格式化一个本地时间日期 v格式: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-6 A:上午AM或下午PM a:上午am或下午pm。 2.4 修改PHP的默认时区 v修改PHP的默认时区有两种方式: v1、修php.ini配置文件: date.timezone = Etc/GMT+8 v2、date_default_timezone_set( ): - 设定用于一个脚本中 所有日期时间函数的默认时区 。 如:date_default_timezone_set(“PRC”); /中国时区。 vdate_default_timezone_get( ): - 获取当前时区 2.5 使用微秒计算PHP脚本执行时间 vmicrotime - 返回当前 Unix 时间戳和微秒数 格式:mixed microtime ( bool get_as_float ) microtime() 当前 Unix 时间戳以及微秒数。本函数仅在支 持 gettimeofday() 系统调用的操作系统下可用。 如果调用时不带可

温馨提示

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

评论

0/150

提交评论