2013-04-16 30 views
-3

我即将发起的一个PHP web应用程序将占用大量内存。PHP Web应用程序将占用大量内存。我如何设置限制或存储该内存?

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

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

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

我可以使用任何类型的本地存储而不是在服务器上,但在用户的机器上?或者这样做不恰当?

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

+0

http://www.php.net/manual/en/ini.core.php#ini.memory-limit – 2013-04-16 00:08:16

+0

你是什么意思“大量的记忆”?千字节,兆字节,千兆字节等?除非我们更多地了解项目的规模,体系结构以及您计划要做的事情,否则“全部”并不意味着什么。 –

+0

@Dagon谢谢,请问如何使用它。你有一个例子或示例代码? –

回答

2

这个问题的正确答案取决于你的需求的描述。说你的应用程序是递归的是非常通用的,并没有告诉我们很多关于你想要实现的东西。个人而言,我会收到用户输入,如果我知道对用户的响应将会是大量数据,那么我会确保我的服务器在独立于API请求的处理队列中完成所有繁重工作。用户不必等待很长时间才能做出回应。因此,您的后端将处理此递归方法,并将结果存储到缓存文件或缓存块中,并以块为单位将其返回给用户。

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

随意更新您的问题与细节,也许我会更新我的答案,以更好地适合您的需求。

是的,你可以存储在本地的用户。调查html5 localstorage。看到这个答案:Is localstorage the right choice for this webapp? 使Web应用程序在本地存储是很常见的,因此应用程序可以在脱机或服务不佳的区域运行。考虑会议中心或大型结构,服务通常较差或无法使用。仅当您愚蠢地尝试以容易访问的方式存储私人数据时,才会出现不适当的情况。否则,它只是使用你的应用程序。

+0

谢谢你解释。我不认为本地存储是正确的选择,但我现在更了解它。谢谢。 但是,我所做的是抓取部分网络的网络爬虫。它是一个crawl()函数,递归调用初始页面链接到的其他页面。然后我整理内容并存储我需要的内容。我应该怎么做呢。我认为将它存储在内存中会很糟糕。我正在计划回应它。我如何将它存储在服务器上?或者我应该使用本地存储? –

+0

本地存储是否有限制?我认为使用modernizr来检测本地存储并在必要时使用本地存储是一个好主意,但在不支持服务器存储时是一个好主意。但是我怎样才能把php放入js中呢? –

+0

通常这些数据将存储在数据库中 – 2013-04-16 00:27:39

2

首先,PHP在服务器上执行只有。因此,关于“在用户计算机上”的最后一段与PHP内存问题完全无关。其次,你应该知道递归算法的局限性!它应该停止,当它是假设停止 - 又名。当它到达递归算法的base case。你实际上并没有问过如何设置PHP的内存限制来控制程序的运行方式,对吗?仅仅因为你调用递归函数并不意味着你的应用程序保证使用大量的内存。最后,如果你确信你的PHP脚本是按照你所希望的方式工作的,但它只是需要比允许的更多的内存,你可以增加限制。有很多,many questions问如何做到这一点。