# GeneAgro CMS 基础设施使用说明（数据库/缓存/日志/上传）

数据库
- 配置文件：config/database.php。
  - 主要参数：type=\"mysqli\"，host、user、passwd、port、dbname、prefix（默认 ay_）、charset（utf8）。
  - 事务：可在 core/convention.php 中配置 database.transaction。
- 使用建议：
  - 为 ay_syslog（系统日志表）创建必要索引（如 time、level）。
  - 生产环境开启最小化权限账号（仅当前库权限）。

缓存与会话
- 会话存储：默认文件。
  - 切换为 Memcache：在 core/convention.php 设置 session.handler=\"memcache\"，并配置 session.path 与 cache.server（host:port）。
  - 注意事项：
    - 需要安装 PHP memcache 扩展；确保 Memcache 服务可用。
    - Basic::setSessionHandler 中会话路径键名为 \"seesion.path\"（存在拼写问题）。若启用 Memcache 会话，请在 config/config.php 中使用 \"seesion.path\" 键进行覆盖，或修复 Basic.php 将其改为 \"session.path\"。
- 缓存：core/cache/*。
  - Memcache 驱动：通过 cache.handler=\"memcache\" 启用。
  - 适用场景：热点数据、配置缓存、列表页缓存等。

日志
- 配置：core/convention.php 中 log_record_type（\"db\" 或 \"text\"）。
- 文本日志：
  - 位置：log/ 目录，按日期分文件（YYYYMMDD.log）。
  - 字段：level、content、ip、os、bs、user、time。
- 数据库日志：
  - 表：ay_syslog（通过 core/log/LogDb.php 写入）。
  - 字段：level、event、ip、os、bs、user、time。
- 写入方式：控制器中使用 $this->log($level, $content) 或 Controller::log(...)。

上传与水印
- 入口函数：core/function/file.php::upload。
- 配置项：
  - upload.format：允许上传的扩展名列表（如 jpg|png|gif|bmp|jpeg）。
  - upload.max_width / upload.max_height：最大尺寸限制。
  - ico.max_width / ico.max_height：缩略图尺寸限制。
  - 水印：在后台系统配置开启后，上传函数执行水印处理（需 GD 扩展）。
- 存储路径：默认 static/upload/image/ 下（可按业务自定义与扩展）。

安全与合规
- 访问控制：core/convention.php 的 access_rule.* 可限制特定浏览器或操作系统访问。
- 会话安全：建议开启仅站点路径会话（session_in_sitepath=true），并启用 HttpOnly 与 Secure（按站点 HTTPS 情况设置）。
- 文件权限：确保 runtime、log、static/upload、data 等目录具备写入权限；生产环境最小化权限策略。

运维建议
- 定期归档日志：按日/周归档 text 日志或对 ay_syslog 做清理策略。
- 数据库备份：static/backup/sql 可存放备份脚本，建议配合定时任务与远程备份。
- 性能优化：合理使用 Memcache；长列表页可结合分页与缓存降低数据库压力。