MySQL查询进度信息

时间:2014-11-13 13:47:49

标签: php jquery mysql

我有一个php脚本,它执行一个mysql查询。我有一个HTML / JQuery前端,它启动一个异步调用(AJAX)到一个脚本,请求它例如删除一些数据。 我知道我的数据池非常小,但是如果它变大了,我想显示已经处理了多少行(因为不可能显示估计的时间,因为在查询完成之前它是未知的)。

这个问题相当理论而非实际。有没有办法知道在查询仍在运行时已经处理了多少行?

它可以是删除或选择语句。

我的基本问题是:是否有可能让一个php脚本执行一个长查询,而另一个PHP脚本在它被调用时仍在运行时检索其状态?(例如以某种方式检索受影响的行对于特定的查询或什么?)

为了简单起见,假设我有2个php文件,我可以直接从我的浏览器调用 - 一个执行查询,另一个据称检索其状态。有可能,如果是这样,有人能指出我正确的方向吗?我是否可能必须使用某种存储过程,至少会报告已处理的行数?

1 个答案:

答案 0 :(得分:1)

  

这个问题相当理论而非实际。有没有办法知道在查询仍在运行时已经处理了多少行?

不是原生的,但你可以解决。

  

是否有可能让一个php脚本执行一个长查询,而另一个php脚本在它被调用时仍在运行时检索其现状? (例如以某种方式检索特定查询或其他东西的受影响的行?)

这两个脚本应共享一个公共存储位置以便“通信”,并且您可以将Redis用于此目的。

执行查询的脚本也会从Redis更新值,另一个脚本从Redis读取数据并将其返回给浏览器。

另一种方法是批量执行查询( 10,20,等等),您可以在客户端计算已处理的查询。理论上,如果查询脚本没有返回错误,则表示所有查询都成功执行,您可以增加计数值。您重复该过程,直到查询脚本返回值为0的已执行查询,这意味着您已完成。

有关详细信息,请参阅this answer on SOhttp://redis.io/