做完数据库抽象层,可能要做一个通用的缓存层

作者 : admin 于 2009年03月07日, 14:17:49
2009
03-7

数据抽象层实现了Mysql和SQLite的兼容,基本也就够用了,基本所有的PHP环境现在都支持sqlite(起码我配的环境是),而且扩展的过程证明了这个规则是可以通用的。

低下要做个通用的缓存层,基本就是 key value 这种简单映射的就足够。这种缓存目前实现主要有本地文本,bdb,memcache几大系列。本地文本异常灵活,方便迁移,不依赖其他组件,直接用PHP的文件读写函数就可以。缺点是,未有大规模系统使用,因为PHP本身效率问题。小的应用还是可以使用的,phpx上也有个三德子写的通用文本缓存类。

bdb就非常不错了,嵌入式的数据库,支持简单的key value模式,而且本身非常小,但效率高,支撑非常大的数据量。

memcache就不用说了,太通用了,很多大型的系统都在应用,优缺点不再重复。

抽象层兼容这几个就行了,能实现无缝迁移即可。

计划下周末开工。

SQLite牛刀小试

作者 : admin 于 2009年03月07日, 02:07:28
2009
03-7

这玩意据说跟bdb一样,嵌入式数据库,正好嵌到了PHP上边,因为写框架,框架里新添加了一个功能,就是管理模块的一个模块,本想用mysql来做,又一想,用mysql,那迁移起来可麻烦了,不运行一个install就没法部署了,不如把功能直接镶嵌,直接使用。
SQLite跟mysql一样,是关系型数据库,而且功能都类似,我直接使用原来的接口,写了一个数据抽象层,直接挂接到原框架里,很好用。
SQLite管理,我还找了两个工具,一个桌面版的,类似mysql front ,一个web版的,看来就像phpmyadmin了。

413 Request Entity Too Large

——————————————————————————–

nginx/0.5.34

FUCK Nginx HOST

那个sqlitemanager http://www.sqlitemanager.org/

代码如下,因为使用不多,临时用一下,所以细节没怎么处理,待出问题的时候再来修改。

  1. < ?php
  2. /*  DB.SQLite.Class.php
  3.  *  SQLite
  4.  *  @link        http://www.sunboyu.cn
  5.  *  @package     OA
  6.  *  @version     V1.0
  7.  *
  8.  *  2009 03 07  sunboyu@gmail.com
  9.  *  Demo
  10.  */
  11. require_once(ROOT."/Include/Class/DB.InterFace.php");
  12. class SQLite implements DateBaseConnect
  13. {
  14. #连接标识
  15. public $handle = false;
  16. #结果标识
  17. public $query;
  18. #查询次数
  19. public $exetime;
  20. #数据库连接
  21.     public function Connect( $argvs )
  22. {
  23. $this->handle = @sqlite_open( $argvs['hostname'].'/'.$argvs['datebase'] , $argvs['mode'] , $sqliteerror );
  24. if(!$this->handle)
  25. {
  26. die("Can't connect to the datebase ".$argvs['datebase']);
  27. }
  28. $this->exetime = 0;
  29. }
  30. #使用数据库
  31. public function selectDateBase( $datebase )
  32. {
  33. #此方法无用
  34. return true;
  35. }
  36. #执行一个查询
  37. public function query( $sql )
  38. {
  39.         #echo $sql;
  40. $this->query = sqlite_query( $sql , $this->handle ) or die("query error".sqlite_last_error( $this->handle ));
  41. $this->exetime++;
  42. return true;
  43. }
  44. #取得一行
  45. public function fetch( $sql )
  46. {
  47. $this->query( $sql );
  48. while( $row = mysql_fetch_array( $this->query, MYSQL_ASSOC ) )
  49. {
  50. return $row;
  51.     }
  52. return false;
  53. }
  54. #取得所有
  55. public function fetchAll( $sql )
  56. {
  57. $this->query( $sql );
  58. return sqlite_fetch_all( $this->query );
  59. }
  60. #取得影响行数
  61. public function affectedRow()
  62. {
  63. return true;
  64. }
  65. #取得结果行数
  66. public function recordCount()
  67. {
  68. return sqlite_num_rows( $this->query );
  69. }
  70. #取得上次插入ID
  71. public function insertID()
  72. {
  73. return false;
  74. }
  75. #释放资源
  76. public function close()
  77. {
  78. unset( $this->handle );
  79. }
  80. #析构函数
  81. /*
  82. function __destruct()
  83. {
  84. $this->close();
  85. }
  86. */
  87. }
  88. ?>