php - 每次给定时间插入一行,否则更新前一行(Postgresql、PHP)

标签 php c++ apache postgresql upsert

我有多个设备(具体来说有十一个)每秒发送信息。这些信息在 apache 服务器中接收,由 PHP 脚本解析,存储在数据库中,最后显示在 gui 中。 我现在正在做的是检查当天的行是否存在,如果不存在则创建一个新行,否则更新它。 我这样做的原因是因为我需要从数据库中轮询信息并将其显示在 C++ 应用程序中,以使其看起来有点实时;如果我要在每次设备发送信息时创建一行,处理和读取数据将花费大量时间以及系统资源(内存、CPU 等),使得数据的显示不太真实 -时间。 我编写了一个报告生成工具,它获取每天(从 00:00:00 到 23:59:59)的信息并将其放入 Excel 电子表格中。

我的问题基本上是:

  • 是否可以直接在数据库服务器中执行插入/更新部分,还是必须在 php 脚本中执行逻辑?

  • 是否有更好(更有效)的方式来存储信息而不降低显示设备的性能?

  • 关于报告生成,如果我想采样间隔,可以说从昨天 15:50:00 开始到今天 12:45:00 结束,我当前的数据结构无法完成,那么该怎么办我需要考虑创建一个允许我创建此类查询的数据结构。

我使用的组件: - Apache 2.4.4 - PostgreSQL 9.2.3-2 - PHP 5.4.13

最佳答案

我的建议 - 只需存储您的设备正在发送的所有信息。通过适当的索引和查询,您可以非常快速地处理和检索数据库中的信息。

对于您的问题:

是的,可以使用 SQL、PL/pgSQL、PL/PHP、PL/Java、PL/Py 和 Postgres 中内置的许多其他语言在 Postgres DB 中构建您想要的任何逻辑。

正如我之前所说 - 正确的索引可以发挥魔力。

如果您无法通过完整表获得所需的查询速度 - 您可以为每个设备创建一个包含 1 行的小表。并将最后已知的值保留在此表中,以实时显示

关于php - 每次给定时间插入一行,否则更新前一行(Postgresql、PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16678631/

相关文章:

php - array_search 函数不返回值

php - 使用 Jquery Checkbox 发送多个表单

Apache - 由于 RewriteRule,重定向太多

c++ - 错误 : symbol not found (C++)

c++ - 16个嵌套循环速度C++/Rcpp

apache - httpd.conf AllowOverride全部

php - 执行我的 PHP 脚本时 Apache 崩溃了

php - 如何合并JSON格式的MySQL查询结果

php - TCPDF - 来自 mysql 的打印表显示重复的第一行

c++ - 临时对象需要复制构造函数