【问题标题】:Mysql query is not working when executed after few minutes几分钟后执行Mysql查询不起作用
【发布时间】:2014-11-15 07:14:06
【问题描述】:

我不确定发生了什么,但似乎是因为等待时间。 所以当我执行此页面进行视频转换时。首先 mysql 查询有效,但几分钟后 mysql 查询将无法正常工作。转换小文件时不会发生(转换时间更短)

mysql 工作

$db->query("UPDATE temporary SET used='1' WHERE hash='$hash'");

//等待ffmpeg转换

exec("/usr/local/bin/ffmpeg -y -i $input -threads 10 -preset medium -vf 'scale=-1:270, scale=trunc(iw/2)*2:270' -map 0 -movflags +faststart -profile:v baseline -level 3.0 $output");

//mysql不会工作

$db->query("UPDATE temporary SET used='1' WHERE hash='$hash'");

//这里仍然有效

unlink($dir.$file);

【问题讨论】:

  • “不会工作”是什么意思?连接?查询?你检查过日志文件吗?
  • 我没有得到任何日志文件。我知道,当 ffmpeg 转换后 php 执行花费太长时间才能再次到达 sql 查询时,它将无法正常工作。所以这很可能是连接?
  • 谁知道呢!您绝对可以激活日志文件以深入研究问题。一个 sql 查询涉及很多事情,其中​​任何事情都可能失败。你检查过 php error_log 吗?服务器控制台? mysql 日志?
  • SET GLOBAL wait_timeout= '3600' 这实际上完成了 mysql 连接关闭时间的工作
  • 请注意,您正在不必要地劫持连接。您最好关闭连接,进行视频转码,然后打开一个新的进行更新。 db 连接是非常宝贵且有限的资源!

标签: php mysql


【解决方案1】:

要更好地了解运行查询时发生的情况,请在控制台上执行以下操作:

mysql> show full processlist;

如果您有大量查询正在运行,并且您想缩小列表范围,那么可以像这样使用寻呼机:

mysql> pager grep "<your sql query string>";
mysql> show full processlist;

我希望这有助于缩小问题范围!

更多信息:http://dev.mysql.com/doc/refman/5.1/en/show-processlist.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多