【问题标题】:Delete query from proccess list with CodeIgniter使用 CodeIgniter 从进程列表中删除查询
【发布时间】:2014-02-10 10:58:01
【问题描述】:

我对睡眠查询有疑问。我的 WEB 中的某些任务花费的时间超过 1 分钟,因此 mysql 查询的状态为“睡眠”,直到进程关闭。我想在获取详细信息后关闭进程。

$delay = $this->db->select('*');
    $delay = $this->db->get('system_status');
    if($delay->num_rows() != 0) $delay = $delay->result_array();

并且在这段代码之后应该是一些清晰的或删除插入的行以处理列表,直到它将被声明为“睡眠”。有什么想法吗?

【问题讨论】:

  • 超时1分钟后需要重新连接数据库。
  • 如何使用codeigniter? ant 我认为只要清除这个连接就足够了。
  • CodeIgniter 有一个DB() 常用函数来创建数据库连接。你可以使用:$this->db = DB();我自己没有尝试过,试一试,让我知道它是如何工作的。
  • $this->db->reset(); 可能会有所帮助
  • Hashem Qolami,这个方法到底有什么作用?我不想创建新的连接,我想破坏旧的连接

标签: php mysql codeigniter process


【解决方案1】:

正如我在 cmets 中指出的,您需要在 1 分钟超时后更新数据库连接。

CodeIgniter 有一个方法可以重新连接数据库连接:

$this->db->reconnect();

来自Doc

重新连接/保持连接状态

如果在您执行操作时超过了数据库服务器的空闲超时 一些繁重的 PHP 提升(例如处理图像),你应该 考虑在之前使用reconnect() 方法ping 服务器 发送进一步的查询,可以优雅地保持连接 活着或重新建立它。

【讨论】:

  • 谢谢,但正如我所说,我不需要更新所有连接,我只需要删除插入到进程列表中的最后一个查询,直到它获得状态“睡眠”
  • @ŽydriusNežydras 要重置旧查询,您可能需要在 SO 上查看此主题:stackoverflow.com/questions/6246023/…
  • 是的,这是我想要的。但是有信息如何杀死所有正在休眠的进程,如何删除最后一个插入的进程?
  • @ŽydriusNežydras 破解核心文件需要动手 :),我会在接下来的 30 分钟内尝试一下。
  • 没有时间不要勉强自己。我尝试在控制器中的每个查询之后添加$this->db->start_cache();$this->db->stop_cache(); $this->db->flush_cache();,我认为它有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多