我正在尝试构建一个将查询数据库的应用程序,并在数据进入数据库时​​将数据发送到某个地方.

我可以使用以下代码从数据库中获取所需的数据:

$sql="SELECT * FROM `signals` order by `time` DESC LIMIT 100";

$result = mysqli_query($DatabasePointer,$sql)

or die(mysqli_error($DatabasePointer));

$row_cnt = mysqli_num_rows($result);

if($row_cnt>0)

{

$array = array();

$i=0;

while($row = mysqli_fetch_array($result))

{

$i++;

//$a = array();

$epoch = $row['time'];

// convert UNIX timestamp to PHP DateTime

$dt = new DateTime("@$epoch");

if(

($row['symbol'] === 'USDJPYecn')

|| ($row['symbol'] === 'USDCADecn')

|| ($row['symbol'] === 'EURUSDecn')

)

{

if(

($row['timeframe'] === 'M5')

|| ($row['timeframe'] === 'M15')

)

{

$a = array(

"time" => $dt->format('Y-m-d H:i:s'),

"signal" => $row['signal'],

"symbol" => $row['symbol'],

"price" => $row['price'],

"timeframe" => $row['timeframe'],

"epoch" => $row['time'],

"candel" => $row['candel']

);

$array[] = $a;

}

}

} // while

echo json_encode($array, JSON_UNESCAPED_SLASHES);

}

但是,我不确定如何修改代码以检查数据是否为新数据,或者是否已发送到其他来源.我也不确定如何修改代码以仅在命中数据库时发送新数据,而不是像我现在正在调用的那样整个数据数组.

有人能指出我正确的方向吗?

编辑:

$sql="SELECT * FROM `tdisignals` order by `time` DESC LIMIT 100";

$result = mysqli_query($DatabasePointer,$sql)

or die(mysqli_error($DatabasePointer));

$row_cnt = mysqli_num_rows($result);

if($row_cnt>0)

{

$array = array();

$i=0;

while($row = mysqli_fetch_array($result))

{

$i++;

//$a = array();

$epoch = $row['time'];

// convert UNIX timestamp to PHP DateTime

$dt = new DateTime("@$epoch");

if(

$row['symbol'] === 'USDJPYecn'

|| ($row['symbol'] === 'USDCADecn')

|| ($row['symbol'] === 'GBPUSDecn'))

{

if(

$row['timeframe'] === 'M5')

|| ($row['timeframe'] === 'M15'))

{

$a = array(

"time" => $dt->format('Y-m-d H:i:s'),

"signal" => $row['signal'],

"symbol" => $row['symbol'],

"price" => $row['price'],

"timeframe" => $row['timeframe'],

"epoch" => $row['time'],

"candel" => $row['candel'],

);

$array[] = $a;

}

}

}

// echo json_encode($array, JSON_UNESCAPED_SLASHES);

$fuegostore = json_encode($array, JSON_UNESCAPED_SLASHES);

// $sql2 = "INSERT INTO fuegosync (time, lastsync) ".

// "VALUES ('$date', '$fuegostore')";

// $result2 = mysqli_query($DatabasePointer,$sql2)

// or die(mysqli_error($DatabasePointer));

$sql3="SELECT lastsync, MAX(CAST(time AS CHAR)) FROM `fuegosync`";

$result3 = mysqli_query($DatabasePointer,$sql3)

or die(mysqli_error($DatabasePointer));

$row2 = mysqli_fetch_row($result3);

if($row2[0] === $fuegostore)

echo 'No New Signals';

else

echo 'New Signals';

///OPTION 1:

//print_r (json_encode($array[0], JSON_UNESCAPED_SLASHES));

//OPTION 2:

foreach($array as $x) {

if(strtotime($array[0]['time']) >= $row2[1]) {

echo ''.$x['signal'].' - '.$x['symbol'].' - '.$x['price'].'
';

} else {

echo 'No New Signals';

}

}

echo $row2[0];

}

此代码成功检测到命中数据库的新数据.我现在正在努力的是修改代码,使其仅显示新检测到的数据,而不显示您看到的整个数组.

新编辑:

我已经获得了仅显示最新数据的代码,但是现在我遇到了一个难题.

如果我每分钟轮询一次数据库,并且有一个新的数据命中数据库,则脚本将对其进行拾取;但是,如果在第一个新数据被发送到目标后数秒内又有另一个新数据命中数据库,则第二个数据将命中数据库.新作品将被完全忽略,因为投票将是每分钟一次.我基本上必须每隔几秒钟轮询一次数据库……这听起来像一场噩梦……

灰色的选项1是显示最新数据的内容,但是会在基于分钟的轮询之前跳过较新的数据,除非每秒对数据库进行一次轮询.

选项2可以工作,但是可以显示整个数组…所以我不确定如何修改代码以仅显示最新片段,而不显示整个组件.

有什么建议么?

解决方法:

担保的

做这种事情的最安全的方法之一是:

>在源上增加字段

>允许查询目标

分步,源驱动

>您在源中添加了一些数据,其ID会自动增加

>您从源查询目标,并要求知道最后一个ID

>使用此ID从源中获取所有新记录,并使用这些数据查询目标上的插入页面

备用,目标驱动

>您在源中添加了一些数据,其ID会自动增加

>您的目标获得更大的ID,并要求来源提供新数据

>目标自己更新

您可以再次执行第一步.如果您小心插入(使用回滚,一次失败就将整个批次中断),那么只要源/目标链接发生故障,并且带宽尽可能低,就应该有一个完美的目标.

单面和免签

这允许从源发送批量数据,而无需答案或目标操作.

不管数据是否在途中丢失,它只会发送一次.

>具有三个状态字段在源上发送

一步步

>在源中添加一些数据,默认情况下将其发送为0

>您将每个发送== 0设置为发送= -1

>选择每-1,然后将它们发送到目标

>将-1更新为1

返回第一步.

这样可以使您大批量工作,而不必在发送脚本之前加锁写操作,并且确保在发送脚本之间不能掉线.

时间戳记

这看起来很像上一个,但是我们没有使用每行一个字段,而是使用一个新表来保持最后一个同步:

一步步

>您在源中添加一些数据及其时间戳

>您将获得当前时间戳-1(现在是一秒钟)

>您将获得最后的同步时间戳(如果是第一次同步,则为0)

>选择并发送行,其中timestampOfPost< = timestamp-1和timestampOfPost> timestampLastSync

>使用时间戳-点2中的1更新您的上一个同步时间戳.

如果您不使用“将时间倒退1秒”并将其保留在变量中,则时间戳可能会很棘手,因为您可能会丢失一些更新:

如果以*** 754(.1)s发送,则从*** 754(.2)s到(.9)s的每一行都将被视为已发送,就像我们完成了*** 754的时间戳一样,它将开始下次发送*** 755.

标签:arrays,sql,mysql,php

来源: https://codeday.me/bug/20191112/2024189.html

php检查数据库记录,php-检查数据库中是否有新条目相关推荐

  1. 定位排除数据库故障_对数据库邮件故障进行故障排除

    定位排除数据库故障 描述 (Description) Database Mail is a convenient and easy way to send alerts, reports, or da ...

  2. sql 数据库检查_数据库检查点– SQL Server 2016中的增强功能

    sql 数据库检查 When a new row is inserted or an existing one is updated in your database, the SQL Server ...

  3. 高效进行 Oracle 日常巡检——数据库基本情况检查

    对于线上的业务,Oracle 的数据库运行的稳定性和安全性是用户关心的一个至关重要的问题,除了通过监控平台对数据库进行监控以外,还需要定期对数据库进行"体检",数据库巡检是保障数据 ...

  4. oracle schema_Oracle数据库坏块检查与修复

    摘要:简述数据库坏块,发现并处理Oracle的物理坏块.逻辑坏块 以下摘自网络并规整: 一.数据库坏块介绍 数据库的数据块有固定的格式和结构,分三层:cache layer,transaction l ...

  5. apache日志导入mysql,将Apache访问日志记录到Mysql数据库中

    环境 操作系统:CentOS 步骤 1.下载源码 下载地址: https://packages.debian.org/jessie/libapache2-mod-log-sql-mysql 2.con ...

  6. Oracle 日常巡检——数据库基本情况检查

    对于线上的业务,Oracle 的 数据库 运行的稳定性和安全性是用户关心的一个至关重要的问题,除了通过监控平台对数据库进行监控以外,还需要定期对数据库进行"体检",数据库巡检是保障 ...

  7. teradata查看正在运行的进程_一种基于greenplum数据库的状态检查及性能监控工具.doc...

    一种基于greenplum数据库的状态检查及性能监控工具 开发中心 导师责任制结业论文 题目:一种基于GreenPlum数据库的状态检查及性能监控工具 学员姓名: 导 师: 部 门: 非功能集成测试处 ...

  8. postgresql数据库工作常用命令-(数据库性能检查相关命令) -TODO

    文章目录 一.postgresql数据库工作常用命令 1. 数据库性能检查相关命令 2. 表结构信息查询 3. 命令行下更好显示 查询结果 一.postgresql数据库工作常用命令 查看当前都有什么 ...

  9. 使用T-SQL进行数据库备份并检查该备份文件是否存在且作出相应处理

    使用T-SQL进行数据库备份并检查该备份文件是否存在且作出相应处理 USE master GO EXEC sp_addumpdevice 'disk', 'AdvWorksData', 'E:/开发软 ...

最新文章

  1. 使用 cmd、PowerShell 等用命令行的方式创建文件及文件夹
  2. gulp与grunt对比
  3. gin框架长连接_一个TCP长连接设备管理后台工程(一)
  4. linux 多个变量,linux-BASH-使用相同“变量”的多个实例读入...
  5. Linux篇 | 多网卡绑定技术 binding 和 网络组nmcli
  6. 第六章 数组和索引器 (6.6 索引器)
  7. Ambari实现HTTPS登陆
  8. app启动监听网络类型
  9. PTA19、通过两个列表构建字典 (10 分)
  10. c# 批量mqtt_c# mqtt服务器
  11. c++函数返回二维数组_C++ 怎样让函数返回数组
  12. 如何将zlib,gzip和zip相关联?它们有什么共同之处,它们有何不同?
  13. Windows Phone Developer Tools Offline Documentation 脱机文档下载
  14. 【咕嘎批量图片查找助手】如何批量根据图片文件名批量查找图片库,移动或复制到指定文件夹保存
  15. 看完这份全国各地结婚/离婚数据,我彻底懵了。。。
  16. Python:RSA秘钥生成与加密解密整理
  17. CQOI2007]涂色paint(BZOJ 1260) 区间动态规划 DP 逆向思维
  18. oracle数据库中批量把一张表里面的数据插入到不同的表中的方法
  19. 分享:制作属于自己的O'REILLY“动物书”封面
  20. CAD——MV视口与图层

热门文章

  1. xp系统网上邻居看不到局域网电脑_Win7系统网上邻居看不到局域网中其他电脑怎么办...
  2. VisualStudio 2017 c++安装
  3. 某课的flask视频 速取
  4. 内容赛道进入集团作战时代,巨头呈现“一超多强”竞争格局
  5. 我不喜欢代码,却为何坚持做程序员(二)
  6. UI自动化辅助工具Inspect
  7. 使用Jekyll搭建免费的个人博客详细教程
  8. 傅里叶变换的通俗理解
  9. idea maven拉取报错failed to transfer from http://0.0.0.0/ during a previous attempt
  10. 远程办公,这13个工具比微信更好用!