我即将发起的一个PHP网络应用程序会占用大量内存。
如何设置限制以告诉它在达到某一点时停止?什么是好的限制?
它占用大量内存,因为它是递归的,但是我有一个限制,它可以通过其中一个初始调用进行多少次递归调用。
但是,我仍然希望有一个记忆帽。我怎么能这样做?
我可以使用不在服务器上但在用户机器上的任何类型的本地存储吗?或者这样做不合适吗?
更新:我的大多数问题都在第一个答案中得到了解答,但我仍然想知道如何在PHP中设置内存限制。
答案 0 :(得分:2)
这个问题的正确答案取决于对您需求的描述。说你的应用程序是递归的是非常通用的,并没有告诉我们你想要实现的目标。
就个人而言,我会收到用户输入,如果我知道对用户的响应将是大量数据,我会确保我的服务器在独立于API请求的处理队列中完成所有繁重工作。用户不必等待很长时间才能得到响应。因此,您的后端处理此递归方法并将结果存储到缓存文件中,或缓存块并以块的形式将它们提供给用户。
这是非常通用的,但由于我们并不真正知道你的实际目标是什么,所以我可以说它就是一切。
随意更新您的问题,我可能会更新我的答案以更好地满足您的需求。
是的,您可以在本地存储用户。查看html5 localstorage。看到这个答案:Is localstorage the right choice for this webapp? 通常将Web应用程序存储在本地,以便应用程序可以脱机运行或在服务质量差的区域运行。想想服务通常很差或不可用的会议中心或大型结构。如果您愚蠢地尝试以易于访问的方式存储私人数据,则仅适用。否则,它就是使用您的应用程序所带来的。
答案 1 :(得分:2)
首先,PHP在服务器上只执行 。所以关于用户机器上的最后一段""与PHP内存问题完全无关。
其次,您应该知道递归算法的局限性!它应该停止,当它假定停止 - 又名。当它达到递归算法的base case时。你实际上并没有问过设置PHP的内存限制来控制程序的运行方式,不是吗?仅仅因为您调用递归函数并不意味着您的应用程序可以保证使用大量内存。
最后,如果您确信您的PHP脚本的行为方式符合您的预期,但它只需要比允许的内存更多的内存,您可以增加限制。已经有很多人many questions询问如何做到这一点。