-4

我即将启动的 PHP Web 应用程序将占用大量内存。

如何设置限制以告诉它在达到某个点时停止?什么是好的限制?

它占用大量内存,因为它是递归的,但我限制了它可以从初始调用之一进行多少递归调用。

但是,我仍然想要一个内存上限。我怎样才能做到这一点?

我可以在用户机器上而不是在服务器上使用任何类型的本地存储吗?还是这样做不合适?

更新:我的大部分问题都在第一个答案中得到了解答,但我仍然想知道如何在 PHP 中设置内存限制。

4

2 回答 2

2

这个问题的正确答案取决于您对需求的描述。说你的应用程序是递归的是非常通用的,并没有告诉我们很多关于你想要实现的目标。

就个人而言,我会接收用户输入,如果我知道对用户的响应将是大量数据,我会确保我的服务器在独立于 API 请求的处理队列中完成所有繁重的工作。用户不必等待很长时间才能得到响应。因此,您让后端处理此递归方法并将结果存储到缓存文件中,或缓存块并将它们以块的形式提供给用户。

这是非常通用的,但由于我们并不真正知道您的实际目标是什么,所以我只能说它。

随时更新您的问题的具体细节,也许我会更新我的答案以更好地满足您的需求。

是的,您可以为用户存储在本地。查看 html5 本地存储。请参阅此答案:localstorage 是否是此 webapp 的正确选择? 将网络应用程序存储在本地是很常见的,这样应用程序就可以离线运行或在服务质量差的地区运行。想想服务通常很差或不可用的会议中心或大型结构。仅当您愚蠢地尝试以易于访问的方式存储私人数据时,不适当才适用。否则,这只是使用您的应用程序所带来的。

于 2013-04-16T00:09:13.460 回答
2

首先,PHP在服务器上执行。因此,关于“在用户机器上”的最后一段与 PHP 内存问题完全无关。

其次,您应该知道递归算法的局限性!它应该停止,当它应该停止时 - 也就是。当它达到递归算法的基本情况时。您实际上并不是在询问设置 PHP 的内存限制以控制程序的运行方式,对吗?仅仅因为您正在调用递归函数并不意味着您的应用程序可以保证使用大量内存。

最后,如果您确信您的 PHP 脚本的行为符合您的预期,但它只是需要比允许的更多的内存,您可以增加限制。有很多很多关于如何做到这一点的问题。

于 2013-04-16T00:09:21.213 回答