【问题标题】:Flag selected rows in mysql query在 mysql 查询中标记选定的行
【发布时间】:2012-08-01 16:28:58
【问题描述】:

我有一个代理,我为那个 php 代理文件定义了一个作业。但是如果第二个代理在 1 分钟后运行并且之前的代理工作还没有完成。它会出现问题..... 我想在每个代理中标记选定的行,如果另一个代理运行新查询,它们不会干扰

我如何更改此查询是最好的方法是在该表中创建一个字段以供选择或不选择?并更新该字段?

db::query("SELECT 1000 FROM web-service WHERE `state`= 1 AND `fetch_id`="fetchid"  ")//

1-state = 1 是我的产品的条件

2-i 使用 fetch id 将 id 归入每个代理什么是最好的方法?

【问题讨论】:

  • 自从 Matrix Revolutions 以来我还没有见过这么多特工。
  • ¿一个选择查询如何受到另一个选择查询的影响?您没有显示所有相关代码
  • @Matt 它是一个队列,我连接到网关可能网关响应较晚,代理需要时间 2 分钟我的工作每 1 分钟运行一次这个 php 文件
  • @Alfabravo 我为马特描述了这个

标签: php mysql


【解决方案1】:

如果我理解您的问题,您不希望多个脚本同时在同一行上工作。这被称为contention,可以通过多种方式解决。

我过去解决此问题的一种方法是仅在脚本尚未运行时才运行它。您可以通过此处定义的 shell 脚本执行此操作:Shell script: Ensure that script isn't executed if already running

【讨论】:

  • 我的朋友,我想同时进行 2 件工作,但要使用自己的精选产品
  • 您可以添加一列来标记产品是否“正在使用”,将其设置在SELECT 之后,然后在脚本完成后更新它。
  • 嗯这是最好的方法吗?例如,mysql 可以识别现在选择并运行的女巫行吗?或者最好的方法是更新像你这样的字段,例如in use?
  • 一旦你的SELECT被执行,MySQL的工作就完成了。在使用UPDATE 再次操作数据之前,它不知道您在做什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 2011-09-06
  • 1970-01-01
相关资源
最近更新 更多