您好,我遇到了一个与根据请求释放内存相关的问题。当前代码如下所示:
$db->query("SELECT * FROM `table`")->fetch_array(MYSQLI_ASSOC);
就在今天执行 SHOW FULL PROCESSLIST;我意识到这是不可能的,你需要做这样的事情:
$result = $db->query("SELECT * FROM `table`");
$data = $result->fetch_array(MYSQLI_ASSOC);
$result->free(); // Освобождает память от результата запроса
如果您不执行这些步骤,则经常会出现在控制台中,Warning: Error while sending QUERY packet. PID=19797
否则MySQL server has gone away
是否可以确保 ->free() 在 query 查询之后执行?对此是否有其他措施?
解决方案有点不规范)cron总能解决问题。每 30 秒执行一次: