PHP的错误处理
错误报告级别
PHP程序的错误发生一般归属于下列三个领域:
语法错误:
语法错误最常见,并且也容易修复。如:代码中遗漏一个分号。这类错误会阻止脚本的执行。
运行时错误:
这种错误一般不会阻止PHP脚本的执行,但会阻止当前要做的事情。输出一条错误,但php脚本继续执行
逻辑错误:
这种错误最麻烦,既不阻止脚本执行,也不输出错误消息。
错误报告级别
一个异常(后面面向对象时会讲)则是在一个程序执行过程中出现的一个例外,或是一个事件,它中断了正常指令的运行,跳转到其他程序模块继续执行。
PHP的错误报错级别
调整错误报告级别
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 — 只考虑致命的运行时错误、新解析错误和核心错误。
error_reporting = E_ALL & ~(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE) — 报告除用户导致的错误之外的所有错误。
在PHP脚本可以通过error_reporting( )函数动态设置错误报告级别。
如:error_reporting(E_ALL);
确定PHP错误报告行为的配置指令
使用trigger_error()函数来替代die()
1.首先函数die()等同于exit(),两者如果执行都会终止PHP程序,而且可以在退出程序之前输出一些错误报告。
trigger_error()则可以生成一个用户警告来代替,使程序更具有灵活性。
2.例如,trigger_error(“没有找到文件”,E_USER_ERROR)。使用trigger_error()函数来替代die(),你的代码在处理错误上会更具优势,对于客户程序员来说更容易处理错误。
**
写错误日志
使用指定的文件记录错误报告日志
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(“登录失败了!”);
使用指定的文件记录错误报告日志**
<?php
if(!ora_logon($username, $password)){
//将错误消息写入到操作系统日志中
error_log("Oracle数据库不可用!", 0); }
if(!($foo=allocate_new_foo()){
//发送到管理员邮箱中
error_log("出现大麻烦了!", 1, "webmaster@www.mydomain.com"); }
//发送到本机对应5000端口的服务器中
error_log("搞砸了!", 2, "localhost:5000");
//发送到指定的文件中
error_log("搞砸了!", 3, "/usr/local/errors.log");
?>
PHP的日期和时间
UNIX时间戳
nix 时间戳 :
自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数 .
相关函数:
time( ): 函数返回一个当前系统的时间戳
mktime( ): 取得一个日期的 Unix 时间戳
格式:int mktime(时[,分[,秒[,月[,日[,年[,is_dst区]]]]]]);
注意:is_dst参数表示是否为夏时制,PHP5.10后此参数已废除。
strtotime( ):将任何英文文本的日期时间描述解析为 Unix 时间戳
格式:int strtotime ( string $time [, int $now ] )
在PHP中获取日期和时间
getdate — 取得日期/时间信息
格式:array getdate ( [int timestamp] )
返回一个根据 timestamp 得出的包含有日期信息的结合数组。
如果没有给出时间戳则认为是当前本地时间。数组中的单元如下
日期和时间的格式化输出
修改PHP的默认时区
修改PHP的默认时区有两种方式:
1、修php.ini配置文件: date.timezone = Etc/GMT+8
2、date_default_timezone_set( ): — 设定用于一个脚本中所有日期时间函数的默认时区 。 如:date_default_timezone_set(“PRC”); //中国时区。
3、date_default_timezone_get( ): — 获取当前时区
使用微秒计算PHP脚本执行时间
microtime — 返回当前 Unix 时间戳和微秒数
格式:mixed microtime ( [bool get_as_float] )
microtime() 当前 Unix 时间戳以及微秒数。
本函数仅在支持 gettimeofday() 系统调用的操作系统下可用。
如果调用时不带可选参数,本函数以 “msec sec” 的格式返回一个字符串,其中 sec 是自 Unix 纪(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。
如果给出了 get_as_float 参数并且其值等价于 TRUE,microtime() 将返回一个浮点数。
PHP中GD库的使用
GD简介
PHP 不仅限于只产生 HTML 的输出,还可以创建及操作多种不同格式的图像文件。
PHP提供了一些内置的图像信息函数,也可以使用GD函数库创建新图像或处理已有的图像。
目前GD2库支持GIF、JPEG、PNG和WBMP等格式。此外还支持一些FreeType、Type1等字体库。
JPEG 是一种压缩标准的名字,通常是用来存储照片或者存储具有丰富色彩和色彩层次的图像。这种格式使用了有损压缩。
PNG 是可移植的网络图像,对图像采用了无损压缩标准。
GIF 原义是“图像互换格式”,是一种基于LZW算法的连续色调的无损压缩格式 。