php检查mysql查询是否会运行

时间:2012-02-19 18:23:10

标签: php mysql

我有一个webapp,可让您使用表单中的简单textarea从DB运行查询。我有一个问题:

我需要在运行之前检查查询内存消耗(因此它不会使我的服务器崩溃)。

有没有办法使用PHP或MySQL来做到这一点?

例如,我有3个表:

新闻(idNews,created,idMedio,state) NewsAreaMain (idNewsAreaMain,idNews,idAreaMain) AreaMain (idAreaMain)

并且有人尝试了以下实际崩溃服务器的查询:

SELECT DISTINCT News.* 
FROM NewsAreaMain, News 
WHERE 
    (
        (
            NewsAreaMain.idNews=News.idNews 
            AND News.idNews IN 
                (
                    SELECT DISTINCT News.idNews 
                    FROM News, NewsAreaMain 
                    WHERE NewsAreaMain.idNews=News.idNews 
                    AND NewsAreaMain.idAreaMain="1"
                 )
        ) 
    AND idMedio="5" 
    OR ( idMedio="6" )
    )
AND News.state=1 
ORDER BY created DESC 
LIMIT 0, 20;

2 个答案:

答案 0 :(得分:2)

不是我知道的。如果有的话,我确信那里的所有共享主机站点都会使用它并阻止过于密集的查询而不是使用这样的脏方法来杀死运行时间过长的查询。

那可能是你唯一的选择。有一个过程定期检查SHOW PROCESSLIST中的第一个条目,如果“时间”高于某个值(它是以秒为单位,那么10可能是一个好的,如果紧,值。任何高于60的要求麻烦),用KILL QUERY #####杀死它(使用SHOW PROCESSLIST部分返回的相关ID号)。

答案 1 :(得分:0)

没有mysql查询会导致服务器崩溃。 Mysql非常好用。
它似乎不是一个查询,但有些代码实际上会使服务器崩溃 如果您想提供有关“崩溃服务器”的更多详细信息,我相信会有解决方案。