/** * 检查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; }
/** * 自动加载回调函数。 * * @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; }
/** * 写入操作 * * @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); }
/** * * 邮件通知处理函数 * * @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; }
public static function checkEnviroment($env) { return IniFileManager::getByFilesKey("environment_config.ini", "env_mode") == strtolower($env); }
/** * 新增一条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); }