1

我想知道,ini_set('memory_limit', '-1')在多次使用时是否有任何问题(对服务器不利)?

我需要知道这一点的原因是,我现在正在一个使用连接查询的项目中工作。我们只获取所需的数据以避免最大负载,但在某些情况下数据超过 20000+ 条记录,执行死亡并显示500 (Internal Server Error)

我知道错误 500 可能是许多其他问题的原因,所以我检查了它并发现原因是因为 PHP 执行内存限制超过(256M)。当我设置ini_set('memory_limit', '-1')我的代码时,查询正确执行。

上述解释只是一种情况/场景,无需考虑&是的,我同意使用ini_set('memory_limit', '-1')是一种不好的做法。因此,我的问题显然是要知道在项目的不同部分(例如服务器问题左右)多次使用 ini_set('memory_limit', '-1') 是否有任何问题。如果是,它们是什么?

4

1 回答 1

1

ini_set将在脚本执行期间设置配置选项,并将在脚本结束时恢复。

所以ini_set只适用于当前的php进程。下一次请求到来时,一个新的 php 进程将php.ini首先读取以获取memory_limit,然后您可以使用ini_set将值设置为 -1。

您可以使用ini_get检查memory_limit避免多次设置memory_limit,并检查返回值ini_set以确保成功。

使用ini_set('memory_limit', '-1')是一个坏主意。尝试使用分页来避免一次获取所有数据。

于 2017-04-18T06:42:29.657 回答