在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
错误异常模块错误处理1. 系统定义了一些二进制码,用来表示错误报告的级别: 在 /etc/php5/apache2/php.ini中修改php配置文件,其中display_errors默认为Off,设置为On可以开启PHP输出错误报告功能,在开发时会比较方便,但是在发布时最好关掉,因为会过多泄露网站信息; 通过修改error_reporting的值,使用位运算符:& | ~,组合多个错误级别,并赋值给error_reporting来默认级别; 如果不修改默认配置文件,也可以通过ini_set()、error_reporting()这两个函数做相应的操作:ini_set(‘display_errors’,1); error_reporting( E_ALL & ~E_NOTICE ); 等 2. 自定义错误处理: 除了系统的错误报告之外,可以通过error_reporting(0)屏蔽程序中的错误,并且通过set_error_handler()函数来指定自己定义的错误处理函数,甚至可以给出一个设计优美的错误页面。 3. 使用错误日志 通过修改以下配置并且重启web服务器,启用错误日志功能: error_reporting = E_ALL; 或者其他级别 同时可以使用内置的error_log()函数,可以自定义错误信息到日志中,该函数相关参数使用: 第一个为必选参数:message; 4. 其他错误日志函数:define_syslog_variables()、openlog()、syslog()、closelog();在调用后面三个函数之前必须调用第一个函数; 异常处理1. PHP异常处理实现函数: try{ 可以看到,PHP可以同时捕获多个异常,并根据异常的类型做出不同的处理 2. PHP内置了异常类:Exception,通过继承该类可以自定义自己的异常类,其中,该类可继承的方法和属性为: 日期和时间1. UNIX时间戳:UNIX系统保存1970年1月1日零点(UTC/GMT)(该日期通常称为UNIX纪元)开始起到当前时间所经历的秒数,以一个32位整数表示,以至于在表示1902年以前以及2038年以后的时间会遇到一些问题,如果在WINDOWS下,时间戳不能为负数,如果记录1970年之前的时间则必须要做相应处理; 2. 使用mktime()函数,依次传入hour、minute、second、month、day、year,即可得到UNIX时间戳; 使用strtotime()函数,可以将英语自然语言表述的时间转换为时间戳: strtotime(‘now’); 等等; 3. 使用UNIX时间戳计算时间,只需要将两个时间戳相减即可; 4. 通过getdate()函数,传入一个时间戳,返回一个记录时间/日期的数组,该数组的键名为:seconds、minutes、hours、mday、 wday、mon、year、yday、weekday、month、0;其中mday表示该月中的第几天,wday表示该周中的第几天,yday表示该年中的第几天,weekday表示该周第几天的完整的英文文本、0表示时间戳; 5. 格式化输出:date()函数,该函数传入两个参数,第一个要格式化的格式,第二个为时间戳,如date(‘Y年m月d日 H:i:s’,strtotime(’now’));详细格式代码有: 如果要格式化其他语种的日期,应该用setlocal()本地化,和strftime()来代替date()。 6. 修改默认时区:在配置文件中修改date.timezone,北京时间可以设置为以下任意一个:Asia/Shanghai、Asia/Chongqing、Etc/GMT-8、PRC; 如果不修改配置文件,可以在程序中,使用date_default_timezone_set()函数来设定时区; 7. 在计时应用中,秒为最小单位不够精确,可以使用microtime()函数,该函数传入一个布尔值,默认为false,默认状态下,输出“msec sec”,其中msec是微秒数,sec是时间戳;如果设置为true,则输出一个浮点型,精确到微秒; 文件处理模块1. 文件属性处理函数:
2. 目录解析处理函数: basename()、dirname():分别返回文件的路径和文件名称 pathinfo()返回一个关联数组,包括三个键名: dirname、basename、extension 3. 目录遍历处理函数: opendir():打开一个目录并返回其句柄; readdir():读取一个目录句柄,返回当前指针位置的一个文件,并把指针向后移动一位; closedir():关闭目录句柄; rewinddir():重置目录指针; 4. 统计目录大小: filesize():统计一个文件大小; disk_free_space()、disk_total_space():磁盘剩余空间和磁盘总空间; 如果要统计目录总大小,需要自己写一个函数,遍历整个目录,并把所有文件大小相加(如果知道簇大小的话是否应该考虑一下簇大小); 5. 复制目录:使用mkdir()创建目录,然后写个函数遍历目录并且使用copy()命令拷贝所有文件; 6. 文件基本操作: fopen():打开文件并返回其句柄,第二个参数指定使用的文件模式(和其他语言统一) fclose():关闭一个文件句柄; fwrite():向指定句柄(第一个参数)写入内容; fread()、file_get_contents()、fgets()、fgetc()、file()、readfile()等,和c语言类似; ftell()、fseek()、rewind()等操作文件指针; PS:PHP没有文件对象吗? 7. 文件锁:在多个进程或者线程访问同一个文件时,需要给文件加锁:flock()函数,第一个参数接收文件句柄,第二个参数指定操作类型: LOCK_SH:取得共享锁定; LOCK_EX:取得独享锁定; LOCK_UN:释放锁定; LOCK_NB:附加锁定; 8. 文件上传与下载 文件下载比较简单,通过一个<a>标签,指定服务器中的文件地址即可; 文件上传实现: https://www.github.com/lozybea/learn_www/file_upload |
2022-08-18
2022-08-16
2022-11-06
2022-08-18
2022-07-18
请发表评论