Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP mysql\u close()和mysql\u free\u result()-我应该在什么时候使用它们?_Php_Mysql - Fatal编程技术网

PHP mysql\u close()和mysql\u free\u result()-我应该在什么时候使用它们?

PHP mysql\u close()和mysql\u free\u result()-我应该在什么时候使用它们?,php,mysql,Php,Mysql,我一直在使用Dreamweaver开发基于PHP和MySQL的网站,但由于它往往过于简单,我通常编写自己的查询和PHP来处理结果 在完成一个更复杂的页面后,我可以有多达5个选择和尽可能多的更新,可能在循环中有更多 没有使用持久连接,每个脚本只连接数据库一次 我想知道的是,考虑到我只连接一次MySQL,查询的数量/复杂性是否对MySQL连接有很大影响,我是否需要在脚本中明确调用MySQL\u close() 另外,我应该在什么时候开始使用mysql\u free\u result()(还是应该使用

我一直在使用Dreamweaver开发基于PHP和MySQL的网站,但由于它往往过于简单,我通常编写自己的查询和PHP来处理结果

在完成一个更复杂的页面后,我可以有多达5个
选择
和尽可能多的
更新
,可能在循环中有更多

没有使用持久连接,每个脚本只连接数据库一次

我想知道的是,考虑到我只连接一次MySQL,查询的数量/复杂性是否对MySQL连接有很大影响,我是否需要在脚本中明确调用
MySQL\u close()

另外,我应该在什么时候开始使用
mysql\u free\u result()
(还是应该使用它?)

我关心的事情类型的一个psuedo示例:

connect to database;

aSelect;

do {
    anUpdate;
} while(select has rows);

anotherSelect;

anotherSelect;

anUpdate;

do {
    aSelect;
    anUpdate;
} while (anotherSelect has rows);

anotherUpdate;

aVeryBigSelect;

//end of file
//no mysql_free_result() or mysql_close() calls, should there be?

如果脚本运行时间很短,比如交付一个网页,那么不要调用
mysql\u close
mysql\u free\u result
,因为PHP将在网页执行结束时关闭连接并自动释放内存


另一方面,如果您要编写一个长时间运行的批处理脚本,执行数千次查询,那么最好调用
mysql\u free\u result

您不必自己调用mysql\u close(),脚本完成后连接将关闭


如果查询返回的结果集很大,导致内存不足,则可以调用mysql\u free\u result()。但是,根据经验,只有在实际遇到问题时才可以这样做。

当您不再需要数据库连接时,关闭数据库连接非常重要。(保安)

一旦不再需要查询结果,并且内存不足,就应该调用
mysql_free_result()

例如,这可以在循环查询结果之后完成。

您需要关闭mysql_close()的唯一时间是使用长期运行的脚本,而数据库在主长期循环期间不需要。否则,PHP将在脚本退出时为您清理,并为您关闭连接。我仍然习惯于PHP,在Java开发之后,当出现类似这样的事情时,我总是感到惊讶和/或怀疑——一般来说,Java不会为您清理东西:如果您确实遇到了问题,请不要这样做,这是谁的规则?调用它会有任何开销吗?例如,如果您调用mysql\u close()作为一个经验法则,在你所有剧本的结尾,这有什么害处吗?哈哈,所有这些关于我的“经验法则”表达的骚动。我的观点是,如果不需要这些函数调用,为什么还要添加它们呢。如果你调用它们也没什么坏处,但在大多数情况下它们不是必需的,问题是他是否需要调用这些函数。同意上校的说法,在脚本执行过程中保持数据库连接打开是否会带来安全隐患?我曾经读到,脚本执行后数据库连接不会立即关闭。(通过超时)-因此黑客可以访问数据库。我不知道这是怎么回事。我可以看到这对中间风格攻击的人来说是多么的脆弱,但是如果是这样,那么一旦连接完成,它就会变得脆弱。虽然我并不是自称知道很多安全性。当然,你打开连接的时间越长,就越容易有人攻击你。