2013.6.14
2021.3.18
编程
35
1 min
function setErrorReporting() { //从配置文件读取当前是否为开发环境 if (DEV_ENV == true) { ini_set("error_reprorting", "E_ALL & ~E_NOTICE"); ini_set("display_errors", "on"); } else { error_reporting(E_ALL); ini_set('display_errors', 'Off'); ini_set("log_errors" , "On"); ini_set('error_log', '/var/log/phperror.log'); } } error_reporting() 设置 PHP 的报错级别并返回当前级别。
语法:error_reporting(report_level)
下面列出了report_level可能值:
值常量描述1E_ERROR这是一个严重错误,不可恢复,如位置异常,内存不足等2E_WARNING警告,最一般的错误,如函数的参数错误等4E_PARSE解析错误,在解析PHP文件时产生,并强制PHP在执行前退出8E_NOTICE通告表示可能在操作一些未知的变量等。在开发时可开启通告,以保证程序是"安全通告"的,瑞在正式系统中,应关闭通告16E_CORE_ERROR这个内部错误是由于PHP加载扩展失败而导致的,并且会导致PHP停止运行并退出32E_CORE_WARNINGPHP启动时初始化过程中的警告(非致命性错)64E_COMPILE_ERROR编译错误是在编译时发生,这个错误将导致PHP运行退出128E_COMPILE_WARNING编译警告用于告诉用户一些不推荐的语法信息256E_USER_ERROR用户定义的错误将导致辞PHP退出,它对是来自PHP自身,而是来自脚本文件中。512E_USER_WARNING脚本使用它来通知一个执行失败,同时PHP也会用E_WARNING通知1024E_USER_NOTICE用户定义的通告用于在脚本中表示可能存在的错误2048E_STRICT编码标准化警告(建议如何修改以向前兼容)4096E_RECOVERABLE_ERROR接近致命的运行时错误,若未被捕获则视同E_ERROR8191E_ALL除E_STRICT外的所有错误(PHP6中为8191,即包含所有)
2013.6.9
2021.3.18
编程
143
1 min
创建型模式 抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类. 生成器模式(Builder pattern): 使用生成器模式封装一个产品的构造过程, 并允许按步骤构造. 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示. 工厂模式(factory method pattern): 定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个. 工厂方法让类把实例化推迟到子类. 原型模式(prototype pattern): 当创建给定类的实例过程很昂贵或很复杂时, 就使用原形模式. 单例模式(Singleton pattern): 确保一个类只有一个实例, 并提供全局访问点. 多例模式(Multition pattern): 在一个解决方案中结合两个或多个模式, 以解决一般或重复发生的问题. 结构型模式 适配器模式(Adapter pattern): 将一个类的接口, 转换成客户期望的另一个接口. 适配器让原本接口不兼容的类可以合作无间. 对象适配器使用组合, 类适配器使用多重继承. 桥接模式(Bridge pattern): 使用桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变.
2013.5.14
2021.3.18
编程
61
1 min
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 上面的话来自百度。我个人的理解就是只能是实例化一次,如DB类等。
接下来自己写了一个PHP的单例模式实例。仅仅参考
<?php /** * */ class Singleton { private static $_instance; //私有化__construct,禁止外部直接实例化 private function __construct() { } //私有化克隆外部克隆 private function __clone() { } //获取实例,假如没有单例的实例,这返回new一个进行实例化,并返回实例 public static function getInstance() { if (is_null(self::$_instance)||!isset(self::$_instance)) { self::$_instance = new Singleton(); } return self::$_instance; } //测试函数 public function aa(){ $this->bb(); } private function bb(){ return 'bb'; } } 上面是一个最基本的PHP单例模式,后面可以封装很多函数供外部调用;
2013.5.14
2021.3.18
编程
64
1 min
听闻Nginx有很多优点,我不知道。你也许知道。下面简述安装过程。Mac下编译安装Nginx需要有好多支持库,不过我默认最简单的安装,其他扩展我也用不到。开始
A.PCRE是必须的。所以先安装PCRE
在终端执行如下命令下载最新稳定源码包
curl -O ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.32.tar.gz 然后执行解压安装
tar -vzxf pcre-8.32.tar.gz cd pcre-8.32 ./configure make sudo make install 分别执行以上几条命令。加入没有错的话,安装完成。
B.安装Nginx,终端返回上层目录。下载最新稳定版Nginx源码包,并解压进入到Nginx的源码目录
cd .. curl -O http://nginx.org/download/nginx-1.4.0.tar.gz tar -vzxf nginx-1.4.0.tar.gz cd nginx-1.4.0 配置Nginx
./configure 这里说明一点。我这里是默认的配置。假如有特殊需要的话。请后面跟参数。如ssl之类的。请参阅官方安装文档及参数说明。这里不一一例举。配置完成后。假如没有出错的话。执行以下两条命令进行编译安装。
make sudo make install 上面命令没有出错的情况下说明已经安装完成 ,接下来做一个连接,方便使用Nginx的命令
sudo ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx 然后再输入
2013.5.14
2021.3.18
编程
77
1 min
直入主题。当然安装Redis方法不唯一。我这里讲源码编译方式。
A.到Redis官方下载最新的稳定版本源码包或者利用Curl以及其他的工具下载
curl -O http://redis.googlecode.com/files/redis-2.6.13.tar.gz B.下载完成后进行输入下面命令解压Redis压缩包
tar vzxf redis-2.6.13.tar.gz C.进入Redis解压后的目录进行编译安装
cd redis-2.6.13 make sudo make install 当你看到4个Install的高亮。说明已经安装完成
D.建立配置文件以及对配置文件进行修改
sudo cp redis.conf /private/etc/ sudo vi /private/etc/redis.conf 找到daemonize 把 后面的no改成yes,不然每次启动会占用一个终端的session。
其他的配置根据需要来。我这里不啰嗦。然后保持退出
:wq! E.给启动命令加上参数
alias redis-server="redis-server /etc/redis.conf" 这样保证每次加载的时候都使用你编辑好的配置文件。
F.安装PHP Redi扩展 这里采用PECl安装方式
sudo pecl install redis 执行完毕后说明已经安装完成,编辑php.