首页 »PHP教程 » php入门:PHP大型Web应用入门( 3) »正文
php入门:PHP大型Web应用入门( 3)
来源: 发布时间:星期一, 2009年1月12日 浏览:12次 评论:0
下面 ![](/icons/83654de.gif) 部分是对系统 ![](/icons/83654de.gif) ![](/icons/83654chushi.gif) 化 ![](/icons/83654dou2.gif) 的前 ![](/icons/83654de.gif) 部分 ![](/icons/83654dou.gif) 可能和普通 ![](/icons/83654de.gif) ![](/icons/83654chengxu.gif) 没什么两样 ![](/icons/83654dou.gif) 但是下面这 ![](/icons/83654yi.gif) 段 ![](/icons/83654dou.gif) 我保证你没见过 ![](/icons/83654dou2.gif) <?php // Init ![](/icons/83654System.gif) require('../../ s/kernel/config.inc.php'); // First Startup? Init the tmpfs
(!is_dir ($data_root) || !is_dir ($ s_root)) { (!is_writable ($tmpfs_root)) die ('TMPFS FAILED!!!'); require_once('../../ s/kernel/pkg.inc.' . $phpEx); @mkdir ($data_root); @mkdir ($ s_root); $pkg = BsmPkg ; $pkg->target_dir = $data_root; $pkg->filename = $tmpfs_pkg_data_filename; $pkg->unpack_ o_dir ; $pkg->target_dir = $ s_root; $pkg->filename = $tmpfs_pkg_ s_filename; $pkg->unpack_ o_dir ; } ?> 包含 ![](/icons/83654yi.gif) 个config.inc.php看起来很正常 ![](/icons/83654dou.gif) 它里面有 ![](/icons/83654yi.gif) 些有关系统 ![](/icons/83654de.gif) 设置参数(这个文件后面会有) ![](/icons/83654dou.gif) 然后它会检查$data_root和$ ![](/icons/83654include.gif) s_root目录是否存在 ![](/icons/83654dou.gif) 并检查$tmpfs_root目录是否可写 ![](/icons/83654dou2.gif) 这里 ![](/icons/83654de.gif) $data_root和$ ![](/icons/83654include.gif) s_root按照规定 ![](/icons/83654dou.gif) 是属于$tmpfs_root ![](/icons/83654de.gif) 下 ![](/icons/83654yi.gif) 级目录 ![](/icons/83654dou.gif) 而$tmpfs_root是整个系统使用 ![](/icons/83654de.gif) tmpfs根路径 ![](/icons/83654dou.gif) 它负责保存我们系统 ![](/icons/83654de.gif) 临时数据 ![](/icons/83654dou.gif) 其中$ ![](/icons/83654include.gif) s_root用来保存那些需要被执行体包含 ![](/icons/83654de.gif) ![](/icons/83654include.gif) 文件 ![](/icons/83654dou.gif) $data_root用来存放Cache、模板编译结果等数据文件 ![](/icons/83654dou2.gif) tmpfs是Linux里 ![](/icons/83654de.gif) ![](/icons/83654yi.gif) 种特殊分区格式 ![](/icons/83654dou2.gif) 区别于ext3等 ![](/icons/83654dou.gif) tmpfs创建于内存和交换区上 ![](/icons/83654dou2.gif) Linux有 ![](/icons/83654yi.gif) 个默认 ![](/icons/83654de.gif) shm就是tmpfs类型 ![](/icons/83654dou.gif) 通常mount在/dev/shm上 ![](/icons/83654dou2.gif) tmpfs和ramfs有些相似 ![](/icons/83654dou.gif) 区别 ![](/icons/83654de.gif) 是它会用到交换区 ![](/icons/83654dou2.gif) tmpfs ![](/icons/83654de.gif) 最大好处是IO速度 ![](/icons/83654dou2.gif) 毕竟纯粹 ![](/icons/83654de.gif) 物理磁盘操作效率无法和内存相比 ![](/icons/83654dou.gif) 而且tmpfs使用起来也很方便 ![](/icons/83654dou.gif) 它基本不需要做什么其它设置就可以像普通 ![](/icons/83654de.gif) 物理硬盘 ![](/icons/83654yi.gif) 样使用 ![](/icons/83654dou.gif) 它对 ![](/icons/83654chengxu.gif) 来说是透明 ![](/icons/83654de.gif) ![](/icons/83654dou2.gif) tmpfs ![](/icons/83654de.gif) 使用思路方法和Linux挂载其它类型 ![](/icons/83654de.gif) 分区格式 ![](/icons/83654yi.gif) 样 ![](/icons/83654dou.gif) 可以用mount命令来挂载 ![](/icons/83654dou.gif) 也可以在fstab中设置 ![](/icons/83654dou2.gif) * * * * * * 当系统检测到$tmpfs_root确实存在且可写 ![](/icons/83654dou.gif) 而$data_root和$ ![](/icons/83654include.gif) _root不存在 ![](/icons/83654dou.gif) 表示这是系统第 ![](/icons/83654yi.gif) 次在运行 ![](/icons/83654dou.gif) 它会用内置 ![](/icons/83654de.gif) ![](/icons/83654yi.gif) 个压缩/解压文件 ![](/icons/83654de.gif) ![](/icons/83654yi.gif) 个类来把事先准备好 ![](/icons/83654de.gif) data和 ![](/icons/83654include.gif) s压缩文件解压到$tmpfs_root中 ![](/icons/83654dou.gif) 这个类处理 ![](/icons/83654de.gif) 格式是我自创 ![](/icons/83654de.gif) ![](/icons/83654dou.gif) 它保持了源目录结构 ![](/icons/83654dou.gif) 并保存了文件 ![](/icons/83654de.gif) 属性 ![](/icons/83654dou2.gif) 它也会对每 ![](/icons/83654yi.gif) 个文件做文件长度和MD5校验 ![](/icons/83654dou2.gif) 这个类位于/ ![](/icons/83654include.gif) s/kernel/pkg.inc.php 这里提及 ![](/icons/83654yi.gif) 个细节 ![](/icons/83654dou.gif) 我学习了PHPBB中 ![](/icons/83654de.gif) $phpEx ![](/icons/83654de.gif) 概念 ![](/icons/83654dou.gif) 整个系统中除了 ![](/icons/83654diaoyong.gif) common.inc.php和config.inc.php外 ![](/icons/83654dou.gif) 其它 ![](/icons/83654diaoyong.gif) php文件 ![](/icons/83654de.gif) 地方都没有写“.php”扩展名 ![](/icons/83654dou.gif) 而是用了 ![](/icons/83654yi.gif) 个$phpEx变量代替 ![](/icons/83654dou.gif) 这个变量 ![](/icons/83654de.gif) 值在config文件中可以修改 ![](/icons/83654dou.gif) 这样做 ![](/icons/83654de.gif) 好处是我们随时可以把系统中 ![](/icons/83654de.gif) php ![](/icons/83654chengxu.gif) 改换扩展名 ![](/icons/83654dou2.gif) 比如我们修改了Apache配置 ![](/icons/83654dou.gif) 让php解释器来解释 ![](/icons/83654yi.gif) 种叫做.hello ![](/icons/83654de.gif) 文件 ![](/icons/83654dou.gif) 就可以方便地把整个系统 ![](/icons/83654de.gif) 所有被 ![](/icons/83654include.gif) ![](/icons/83654de.gif) php ![](/icons/83654chengxu.gif) 扩展名改成.hello ![](/icons/83654dou.gif) 再把config中 ![](/icons/83654de.gif) $phpEx ![](/icons/83654de.gif) 值改成“hello” ![](/icons/83654dou.gif) 这样你 ![](/icons/83654de.gif) 系统看起来就像是使用 ![](/icons/83654yi.gif) 种没人见过 ![](/icons/83654de.gif) Hello语言编写 ![](/icons/83654de.gif) 了 ![](/icons/83654dou.gif) 哈哈…… ![](/icons/83654include.gif) s这个压缩文件中包含了/ ![](/icons/83654include.gif) s目录中 ![](/icons/83654de.gif) 所有内容 ![](/icons/83654dou.gif) 它被解压到$tmpfs_root(我 ![](/icons/83654de.gif) 系统中是/opt/tmp/)中 ![](/icons/83654dou.gif) 这样 ![](/icons/83654dou.gif) 在/opt/tmp/ ![](/icons/83654include.gif) s中就有我们想要 ![](/icons/83654de.gif) 所有 ![](/icons/83654include.gif) 文件了 ![](/icons/83654dou.gif) ![](/icons/83654diaoyong.gif) 它比直接 ![](/icons/83654diaoyong.gif) / ![](/icons/83654include.gif) s要快很多 ![](/icons/83654dou2.gif) 下面 ![](/icons/83654de.gif) 部分就是 ![](/icons/83654diaoyong.gif) 已经解压好 ![](/icons/83654de.gif) ![](/icons/83654yi.gif) 些 ![](/icons/83654include.gif) 文件 <?php // Include Kernel file require($ s_root . 'db/' . $global_db_dbms . '.' . $phpEx); require($ s_root . 'kernel/constants.inc.' . $phpEx); require($ s_root . 'kernel/template.inc.' . $phpEx); require($ s_root . 'kernel/session.inc.' . $phpEx); require($ s_root . 'kernel/cache.inc.' . $phpEx); require($ s_root . 'kernel/log.inc.' . $phpEx); require($ s_root . 'kernel/shm.inc.' . $phpEx); require($ s_root . 'function/basic.function.' . $phpEx); require($ s_root . 'function/file.function.' . $phpEx); ?> 接着创建 ![](/icons/83654yi.gif) 个通用 ![](/icons/83654de.gif) 数据库连接$db ![](/icons/83654dou.gif) 它 ![](/icons/83654de.gif) 属性也都在config.inc.php中设置 ![](/icons/83654dou2.gif) <?php // Init the DB Connection $db = $sql_db; // Connect to DB $db->sql_connect($global_db_host, $global_db_user, $global_db_pass, $global_db_name, $global_db_port, false); ?> 创建成功后 ![](/icons/83654dou.gif) 记得把密码清空
相关文章
读者评论
发表评论
|
|