两个函数都调用了php_mysql_do_query()函数,只是第二个参数不同,分别是MYSQL_STORE_RESULT和MYSQL_USE_RESULT。
为了解决这个问题,作者介绍了两个功能相似的函数:mysql_query和mysql_unbuffered_query。
因此,使用mysql_unbuffered_query执行一个返回大结果集的SQL语句时,在遍历结果之前,PHP的内存是不会被结果集占用的。
本文详细分析了PHP查询MySQL大量数据的内存占用问题,介绍了mysql_query和mysql_unbuffered_query函数的差异以及背后的原理,为读者提供了解决类似问题的思路和方法。
前者会将结果集读取到客户端缓冲区,后者则不会。
这两个函数的区别在于,后者从MySQL服务器读取所有的结果集到客户端,而前者只读取结果集的元信息。
最后,文中提到使用mysql_unbuffered_query来避免直接内存占用。
如果在遍历过程中结果没有被PHP缓存(比如放在一个数组中),虽然操作了大量的数据,但是PHP占用的内存总是很小的。
作者首先想到的是MySQL是C/S模型,可能会将所有数据读到客户端缓冲区或者服务端的发送缓冲区,并且已经没有传送给客户端。
本文主要是分析了PHP查询MySQL返回大量结果时的内存占用问题,并涉及到了MySQL CAPI的使用。
这两个参数对应的是MySQL CAPI中的mysql_store_result和mysql_use_result函数。
接下来,文章介绍了这两个函数的实现差异。
文章首先提到了一个同事遇到的问题,即在一个项目中,MySQL查询返回的结果太多,导致PHP内存不足。
而使用mysql_query执行同样的语句时,内存占用会急剧增加,导致内存耗尽。
标签: PHP查询MySQL海量数据内存占用分析、本文地址: https://yihaiquanyi.com/article/be91eeb4e82a880b99fe.html
上一篇:北京网站制造公司排名北京网站制造PHP...