错误异常模块

错误处理

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;  或者其他级别
    display_errors = Off; 关闭错误报告
    log_errors = On;打开错误日志
    log_error_max_len = 1024; 设置日志项的最大长度
    error_log = /your_path_to_log/error.log; 指定日志的完整路径

    同时可以使用内置的error_log()函数,可以自定义错误信息到日志中,该函数相关参数使用:

    第一个为必选参数:message;
    第二个为message_type,为一个整数值,
        0 表示送到操作系统日志中,此时不需要再传入其他参数;
        1 表示使用PHP的Mail()函数,发送信息到某个邮箱中,此时需要再指定一个参数,指定发送到的邮箱;
        2 表示将错误信息发送到TCP服务器中,此时需要指定服务器的地址和端口号;
        3 表示将错误信息保存到文件中,此时需要指定保存到的文件名;

4. 其他错误日志函数:define_syslog_variables()、openlog()、syslog()、closelog();在调用后面三个函数之前必须调用第一个函数;

异常处理

1. PHP异常处理实现函数:

    try{
        //… do something arouse a exception
        throw $exception_obj;
        // …
        // … will never do if excepted
    } catch( EX_CLASS $exception_obj ){
        // do something when excepted 
    } catch ( EX_CLASS2 $exception_obj ){
        // do something when another exception aroused
    }

    可以看到,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’);
    strtotime(‘8 may 2012’);
    strtotime(‘+1 day’);
    strtotime(‘last monday’);

    等等;

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

PHP常用功能模块的更多相关文章

  1. KeilC51常用功能模块使用说明

    本文档包括单片机系统中常用到的时钟中断.通讯及键盘扫描等模块(见所附源程序)的说明.这些模块使用前后台系统模型.为达到最大的灵活性, 需要在用户工程中定义config.h文件, 在其中定义各模块可选参 ...

  2. Biopython常用功能模块

    Biopython项目是旨在减少计算生物学中代码重复的开源项目之一,由国际开发人员协会创建. 它包含表示生物序列和序列注释的类,并且能够读取和写入各种文件格式(FASTA,FASTQ,GenBank和 ...

  3. python常用功能模块

    路径相关:os.pathlib Windows注册表相关:winreg 系统cpu.内存.线程相关:psutil 文件.文件夹处理:shutil 解析和生成ini文件:ConfigParser:(co ...

  4. 使用Teigha.net读取CAD的常用功能模块

    Teigha中实体旋转 代码: using (var trans = database.TransactionManager.StartTransaction()) { Entity ent = tr ...

  5. Atiit 常见功能 常用功能与模块的最快速解决方案

    Atiit 常见功能 常用功能与模块的最快速解决方案 一.大力使用第三方API接口 一.导出excel jquery.table2excel 二.Form表单验证,使用h5验证属性 验证发生在form ...

  6. CTO也糊涂的常用术语:功能模块、业务架构、用户需求、文档……

    功能模块.业务架构.需求分析.用户需求.系统分析.功能设计.详细设计.文档.业务.技术--很多被随口使用的名词,其实是含糊甚至错误的. 到底含糊在哪里,错误在哪里,不仅仅是新手软件开发人员糊涂,许多入 ...

  7. [转]WebPack 常用功能介绍

    概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...

  8. FastReport.Net 常用功能总汇

    一.常用控件 文本框:输入文字或表达式 表格:设置表格的行列数,输入数字或表达式 子报表:放置子报表后,系统会自动增加一个页面,你可以在此页面上设计需要的报表.系统在打印处理时,先按主报表打印,当碰到 ...

  9. WebPack常用功能介绍

    概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...

随机推荐

  1. (高级篇)php结合redis实现高并发下的抢购、秒杀功能

    抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存 ...

  2. 大数据学习(1)Hadoop安装

    集群架构 Hadoop的安装其实就是HDFS和YARN集群的配置,从下面的架构图可以看出,HDFS的每一个DataNode都需要配置NameNode的位置.同理YARN中的每一个NodeManager ...

  3. PHP 使用Echarts生成数据统计报表

    echarts统计,心血来潮~~ 先看下效果图 看下代码 HTML页面  为ECharts准备一个Dom,宽高自定义 <div class="panel panel-info" ...

  4. 【004】【JVM——垃圾收集算法】

     Java虚拟机学习总结文件夹 垃圾收集算法 垃圾收集算法的实现涉及大量的程序细节,并且各个平台的虚拟机操作内存的方法又各不同样,介绍几种垃圾收集算法的思想及其发展过程. 标记-清除算法 垃圾收集 ...

  5. KNN K~近邻算法笔记

    K~近邻算法是最简单的机器学习算法.工作原理就是:将新数据的每一个特征与样本集中数据相应的特征进行比較.然后算法提取样本集中特征最相似的数据的分类标签.一般来说.仅仅提取样本数据集中前K个最相似的数据 ...

  6. 关于Oracle处理DDL和DML语句的事务管理

    SQL主要程序设计语言 数据定义语言DDL(Data Definition Language) 如 create.alter.drop, 数据操作语言DML(Data Munipulation Lan ...

  7. spring mvc对静态资源的访问

    如果我们的项目使用的是springmvc,在web.xml中会有一段这的配置. <servlet> <servlet-name>springMvc</servlet-na ...

  8. mysql+mybatis递归调用

    递归调用的应用场景常常出现在多级嵌套的情况,比如树形的菜单.下面通过一个简单的例子来实现mysql+mybatis的递归. 数据模型 private Integer categoryId; priva ...

  9. JavaSe:代码块执行顺序

    //执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. //普通代码块:在方法或语句中出现 ...

  10. 图片Ping

    前面的话 在CORS出现以前,要实现跨域Ajax通信颇费一些周折.开发人员想出了一些办法,利用DOM中能够执行跨域清求的功能,在不依赖XHR对象的情况下也能发送某种请求.虽然CORS技术已经无处不在, ...