Beispiel #1
0
 /**
  * 检查pdo单例对象是否设置
  *
  * @access private
  * @param 无
  * @return boolean 判断结果(true=正常、false=异常)
  */
 private static function isSetInstance()
 {
     if (Database::$singleton instanceof PDO) {
         // 如果前一个连接是主连接 OK
         if (Database::$singleton->getDsn() == IniFileManager::getByFilesKey(Database::FILE_NAME, "dsn")) {
             return true;
         }
     }
     return false;
 }
Beispiel #2
0
 /**
  * 自动加载回调函数。
  *
  * @access public
  * @param string $className 类名
  * @return boolean 成功 / 失败
  */
 public function __autoload($className)
 {
     // 如果类或者接口已经定义, 直接返回
     if (class_exists($className, false) || interface_exists($className, false)) {
         return true;
     }
     $root_dir = IniFileManager::getByFilesKey("environment_config.ini", "root_lib_dir");
     foreach (self::$config as $dir) {
         $path = $root_dir . "/" . $dir . '/' . $className . '.class.php';
         // 如果文件存在, 加载并返回
         if (file_exists($path)) {
             require $path;
             return true;
         }
     }
     // 文件不存在
     return false;
 }
Beispiel #3
0
 /**
  * 写入操作
  *
  * @access private
  * @param string $msg 信息
  * @return boolean 成功 / 失败
  */
 private static function write($name, $msg, $backtrace = null)
 {
     $file_path = IniFileManager::getByFilesKey(self::FILE_NAME, $name);
     if (!$file_path) {
         return false;
     }
     $f = fopen($file_path . '_' . date("Y-m-d"), 'a');
     if (!$f) {
         return false;
     }
     if (!flock($f, LOCK_EX)) {
         return false;
     }
     $writer = isset($backtrace[0]['file']) ? $backtrace[0]['file'] . '-> ' : "";
     $referer = isset($_SERVER['HTTP_REFERER']) ? ', referer: ' . $_SERVER['HTTP_REFERER'] : "";
     $client = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : "";
     $logs = '[' . date('D M d H:i:s Y') . '] [' . str_replace('dir_', '', $name) . '] [client ' . $client . '] ' . $writer . $msg . $referer . "\n";
     if (!fwrite($f, $logs)) {
         return false;
     }
     return fclose($f);
 }
Beispiel #4
0
 /**
  *
  * 邮件通知处理函数
  *
  * @access public
  * @param string $sub 邮件标题
  * @param Exception $exception 捕捉到的异常
  * @return boolean 处理结果:TRUE 发送成功 / FALSE 未发送成功
  */
 public static function sendExceptionMail($sub, $exception)
 {
     // 获取系统Email接收者
     $reciever = IniFileManager::getByFilesKey("environment_config.ini", "system_mail_reciever");
     if (!$reciever) {
         return false;
     }
     $host = isset($_SERVER["HTTP_HOST"]) ? $_SERVER["HTTP_HOST"] : php_uname('n');
     // 发送
     $sub = "[ylxx game] {$sub} / Host: {$host}";
     $msg = "Date: " . date('Y-m-d H:i:s') . "\nName: " . get_class($exception) . "\nFile: " . $exception->getFile() . "\nLine: " . $exception->getLine() . "\nCode: " . $exception->getCode() . "\nMessage: " . $exception->getMessage();
     $ret = mail($reciever, $sub, $msg);
     if ($ret !== true) {
         return false;
     }
     Logger::debug(__METHOD__ . " was success. \nsubject->" . $sub . "\nmessage->\n" . $msg);
     return true;
 }
Beispiel #5
0
 public static function checkEnviroment($env)
 {
     return IniFileManager::getByFilesKey("environment_config.ini", "env_mode") == strtolower($env);
 }
Beispiel #6
0
 /**
  * 新增一条memcache记录
  *
  * @access public
  * @param string $key 要设置值的key
  * @param mixed $var 要存储的值,字符串和数值直接存储,其他类型序列化后存储
  * @param int $flag 使用MEMCACHE_COMPRESSED指定对值进行压缩(使用zlib)
  * @param int $expire 当前写入缓存的数据的失效时间 / 0为永不过期
  * @return boolean
  */
 public function add($key, $var, $flag = null, $expire = null)
 {
     if (is_null($this->memcached)) {
         return false;
     }
     if (!isset($expire)) {
         $expire = IniFileManager::getByFilesKey(self::FILE_NAME, self::CONFIG_KEY_EXPIRE);
     }
     return $this->memcached->add($key, $var, $flag, $expire);
 }