我养成了将变量使用率保持在最低限度的习惯。 所以我想知道以下是否有任何好处:

$query = $mysqli->query('SELECT * FROM `people` ORDER BY `name` ASC LIMIT 0,30');

// Example 1
$query = $query->fetch_assoc();

// Example 2
$query_r = $query->fetch_assoc();
$query->free();

现在,如果我是对的,那么示例1应该更高效,因为当我重新分配它时, unset $query ,这应该释放与之关联的任何内存。 然而,有一个方法( MySQLi_Result::free() )释放相关的内存 - 这是一回事吗?

如果我不调用::free()来释放与结果相关的任何内存,但是通过重新分配变量来unset它我做同样的事情吗? 我不知道如何记录这类事情 - 有没有人有一些想法?

===============>>#1 票数:5 已采纳

手册似乎建议你仍然应该使用free()来释放内存。 我相信原因是free()释放了MySQL中的内存,而不是PHP。 由于PHP无法为MySQL进行垃圾收集,因此需要调用free()

===============>>#2 票数:3

实施例1 解离从MySQL结果$查询变量。 MySQL结果仍然存在于内存中,并将继续存在并浪费内存直到垃圾收集发生。

实施例2立即释放 MySQL的结果,释放使用的资源。

但是,由于PHP页面通常具有较短的结果集,因此节省的内存非常简单。 除非您长时间在长时间运行的页面上留下大量内存,否则您不会注意到速度减慢。

Brian,PHP 可以垃圾收集MySQL结果,它不会立即发生。 结果存在于PHP的内存池中,而不是MySQL服务器中。

(使用无缓冲查询时内存的位置略有不同,但它们在PHP中很少使用,因此不值得一提)

  ask by Ross translate from so

未解决问题?本站智能推荐:

2回复

PHP:查询结果如何存储在mysqli_result中

当我查询数据库并在mysqli_result中检索结果时,内存使用量非常小。 但是,当我将查询中的所有行都提取到一个关联数组中时,内存使用率变得非常高。 对我来说,存储这么多结果非常消耗内存,但是我只是想知道mysqli_result为何这么小。 每次调用fetch_assoc时,结
1回复

当返回的数据小于10k时,什么会导致mysqli语句使用4GB的内存?

搜索高低,并找不到这个答案..除了“提高你的PHP内存使用限制”,这在这种情况下毫无意义。 所以这里.. 这是一些代码(编辑以显示我之前在此处放置的代码): 这个数据库表中有20行。 以下是从这20行返回的内容(顺便提一下,这是正确的数据): 当我第一次运行此代码时,出
2回复

PHP查询的大量内存使用量

在优化我的Apache + PHP内存使用时,我遇到了一个奇怪的问题。 在尝试绑定MySQLi查询的结果时,代码基本上会出现错误消息“致命错误:允许的内存大小为16777216字节耗尽(尝试分配50331646字节)”。 相关表格是: 而爆炸的查询是: 在服务器上的MyS
1回复

PHP 5.3.23 - PHP 5.6.3 - Zend框架1.12内存使用量增加

我们已经在PHP 5.3.23上运行了一段时间,并且有cron作业,由于对象和引用而使用了一些内存。 大多数crons从未超过128M,尽管可能不是64M。 由于我们升级到PHP 5.6.3,这些crons中的一些使用了疯狂的内存并且仍然死亡,尽管它们没有被更改。 其中一个crons超
1回复

可以使用mysqli连接到数据库,而不是使用mysqli查询是否使用PDO进行? [关闭]

可以使用mysqli连接到数据库,而不是使用mysqli查询是否使用PDO进行? 如何做到这一点?
1回复

mysqli和php:查询结构[关闭]

我可以很好地连接到数据库,但是不确定使用的$query语法以及它是否应该是foreach或while循环...但是我正在尝试这样做: 我有一个带有用户表的数据库。 每个用户都有一个值,该值建议他们当前是否已登录系统。 而且我在每行中都有一个使用$timestamp更新的字段,该字段刷新
1回复

使用mysqli_error调试mysqli查询或将其终止

我不知道怎么了 如何使用mysqli_error函数检查错误原因? 我认为PHP的语法很好。 我猜我的数据库有问题。
1回复

在MySQLi上使用'if'[关闭]

编辑:我忘了使用==。 该主题可以关闭。 我希望根据数据库表中的行在下拉列表中选择其他区域。 我以为这段代码可以解决问题,但是它始终选择“是”。 这是我的PHP: 任何帮助表示赞赏。
1回复

使用mysqli与oop php [关闭]

这是我的connection.php文件 这个脚本没有任何错误。 当我需要在另一个文件中运行mysql查询时,我只需将此connection.php文件包含在该文件中并执行此操作。 我只需要知道,这是最好的做法。 谢谢。
2回复

2查询或1在MySQLi中使用PHP?

我有两张桌子的订票系统。 一个表供用户使用(称为用户),以便用户知道它是否已预订;另一个表供教师使用(称为预订),以使教师知道哪些人报名参加了课程。 以下是用户取消课程预订的示例。 许多用户和教师将同时使用该系统。 鉴于此,有没有更有效,更安全的方法来执行此操作?