baserunner通过服务器上的数据库来操纵与管理会话,会话用于跟踪用户对baserunner的一次又一次的调用。当应用程序第一次调用baserunner时,自动创建会话数据库(也可以在任何时候通过删除文件并运行程序来重建数据库)。如果没有设置_sessionpath变量,会话数据库将放在与baserunner相同的执行文件相同的目录之中,如果指定的则放在指定的目录之中。包含会话数据库的目录必须具有写权限。
会话数据库具有与执行文件相同的文件名(通常是baserun.dbfg与baserun.fpt或baserun.dbf)。如果你将数据库从Foxpro切换到dBase环境(或vice-versa),删除会话数据库,然后运行程序。
当程序运行时,就创建一个用户会话,此时给用户赋予一个唯一的名字,这个名字将在以后的调用中传递给应用程序。
会话周期由_minutes变量指定,其缺省值是10分钟。这表示baserunner将对每个会话维持10钟。例如,如果会话持续了15分钟,则它将会过期。
每次启动一个会话时,所有的记录都将被作上当前的时间标志。已经过期的会话将被作上删除标志。如果数据库没有过期的会话,则加上一个新的记录。如果包含过期的会话记录,新的会话将覆盖第一个过期的记录。如果所有的记录都过期,则重建会话数据库,并且新的会话记录将成为数据库的第一个记录。如果一个过期的记录没有被新的会话覆盖,它仍然是可以使用的。
会话数据库的格式如相:
| 字段 | 类型 | 描述 |
|---|---|---|
| session | memo | 用户会话ID |
| cfg | memo | 程序启动时传递的配置文件名 |
| curr_html | memo | 当前显示所使用的模板文件名 |
| curr_dbf | memo | 当前使用的数据库名 |
| sortorder | memo | 数据库排序表达式 |
| filterset | memo | 当前查询表达式 |
| oldfilter | memo | 上一次的查询表达式 |
| list | memo | 当前使用的列表cache |
| total | memo | 当前使用的汇总值Cache |
| unique | memo | 当前使用的唯一列表Cache |
| time | numeric | 当前使用的程序的实例的时间 |
| length | numeric | 配置文件中_minutes的值 |
| currentpos | numeric | 当前选中的记录值 |
| display | numeric | 当前的_display值 |
| rcount | numeric | 当前查询返回的记录数 |
| newfilter | logical | 当创建了一个新的过滤表达式时本变量被设为True |