Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP应用程序日志存储_Php_Mysql_Mongodb - Fatal编程技术网

PHP应用程序日志存储

PHP应用程序日志存储,php,mysql,mongodb,Php,Mysql,Mongodb,我们基于PHP和MySQL的应用程序创建自定义日志,这些日志被写入MySQL数据库,供用户操作。我们这样做主要是为了便于搜索,因为应用程序已经在使用MySQL进行持久存储,所以这很有意义 我们的日志现在包含1760万行,大小为2GB。在这个地方走动时不是很友好 我想知道社区会建议什么作为存储日志的更好更有效的方法 显然,您可以将该表拆分为1周的所有日志,然后删除非关键日志,并将该表拆分为两个历史关键日志,例如付款等 一般来说,我们通过一个函数写入日志,比如 playerlog($id,$mess

我们基于PHP和MySQL的应用程序创建自定义日志,这些日志被写入MySQL数据库,供用户操作。我们这样做主要是为了便于搜索,因为应用程序已经在使用MySQL进行持久存储,所以这很有意义

我们的日志现在包含1760万行,大小为2GB。在这个地方走动时不是很友好

我想知道社区会建议什么作为存储日志的更好更有效的方法

显然,您可以将该表拆分为1周的所有日志,然后删除非关键日志,并将该表拆分为两个历史关键日志,例如付款等

一般来说,我们通过一个函数写入日志,比如

playerlog($id,$message,$cash,$page,$ip,$time);

但这是一个相当简化的版本,我们也使用MySQL的INSERT DELATED,因为日志对于页面加载并不重要。

您应该澄清需要哪些日志。作为插入后的第二步,您可以设置一个处理日志数据的作业,例如读取日志并对其进行处理(这会将您的DBMS降级为某种消息传递中间件)。这可能是将部分(如付款)存储到未被删除的存档中,或者将身份验证日志写入指定保留时间后被删除的位置。但这一切都取决于您的用例

根据您计划分析的内容或查询数据的方式,您甚至可以将数据存储在MySQL之外

一些可能性:

  • 实施SIEM系统(http://en.wikipedia.org/wiki/Security_information_and_event_management)用于分析事件、触发警报等
  • 使用一个类似SIEM的软件,比如Splunk(参见Splunk.com),它可以处理原始日志,并直接用于日志搜索和分析
  • 如果DBMS解决方案“足够快”,请坚持使用它
  • 只需使用syslog并存储文本日志文件,您就可以跳过整个MySQL

如果您对MongoDB感兴趣(我从标签中假设),您可能想看看这里: