我想确保我的php代码和我的网站不使用永久连接。
我使用下面的sql查询来检查,但我不太理解输出,
$sql = "SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST";
$items = $connection -> fetch_all($sql);
print_r($items);下面是输出,
Array
(
[0] => Array
(
[ID] => 43
[USER] => root
[HOST] => localhost:52246
[DB] => xxx_2010
[COMMAND] => Query
[TIME] => 0
[STATE] => executing
[INFO] => SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
)
[1] => Array
(
[ID] => 38
[USER] => root
[HOST] => localhost:52140
[DB] =>
[COMMAND] => Sleep
[TIME] => 423
[STATE] =>
[INFO] =>
)
)当我点击另一页时,
Array
(
[0] => Array
(
[ID] => 44
[USER] => root
[HOST] => localhost:52301
[DB] => xxx_2010
[COMMAND] => Query
[TIME] => 0
[STATE] => executing
[INFO] => SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
)
[1] => Array
(
[ID] => 38
[USER] => root
[HOST] => localhost:52140
[DB] =>
[COMMAND] => Sleep
[TIME] => 1026
[STATE] =>
[INFO] =>
)
)为什么总是输出两个数组?在[COMMAND]中查询/睡眠意味着什么?在[STATE]中,它说第一个数组中的executing然后在第二个数组中变为空-这是否意味着db连接一旦页面被发送就断开连接。
还有,[TIME] => 0 and [TIME] => 423 -这是什么意思?
为什么会有几个键显示不同的值,如[HOST] => localhost:52246, [HOST] => localhost:52140, [ID] => 43, [ID] => 38等
抱歉我刚才问了一些愚蠢的问题..。
谢谢。
编辑:
现在,在我的浏览器上关闭phpMyadmin之后,我在输出中看到了这个,
Array
(
[0] => Array
(
[ID] => 59
[USER] => root
[HOST] => localhost:53195
[DB] => xxx_2010
[COMMAND] => Query
[TIME] => 0
[STATE] => executing
[INFO] => SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
)
)因此,每当我点击我的网站,它总是返回[STATE] => executing -这是否意味着我的网站是永久连接?
发布于 2011-02-07 16:30:07
您可以从root用户打开一个连接,该连接已经空闲了相当长的时间( ID相同,睡眠时间相当长)。有些东西打开了,但没有关闭它(可能是来自PHPMyAdmin的未关闭连接,或者类似的东西).
您的应用程序没有使用相同的连接(从ID列可以看到)。至于另一个连接,您可以尝试对它进行KILL并查看它是否返回。如果没有,我就不会太担心了。
还有一件事,不要使用root登录到MySQL服务器。创建具有有限权限的用户,并授予流程权限。但千万别以一个自以为是的用户的身份联系.
发布于 2011-02-07 16:26:24
MySQL文档给出了对所有这些领域相当全面的解释
状态'Executing‘表示它所表示的内容(这是您的查询),’睡眠‘表示线程正在等待来自客户端的新命令。
https://stackoverflow.com/questions/4923638
复制相似问题