0

我编写了一个 PHP 应用程序,它使用数据库数据生成 Excel 文件。我正在使用著名的库PHPExcel。使用过这个库的每个人都知道,内存管理是这个库最糟糕的地方。

所以,我的问题是,在我写完我的 excel 然后把它记下来之前,可以提高记忆力吗?

就像是,

error_reporting(1);
ini_set('memory_limit', '500M');
@set_time_limit(0);

一旦完成

error_reporting(1);
ini_set('memory_limit', '128M');
@set_time_limit(0);
4

3 回答 3

5

没有必要把它放回去。ini_set只影响当前请求,不影响整个服务器;一旦您的请求完成,它就会隐式设置回服务器默认值。

于 2012-09-07T06:36:19.397 回答
0

这可能是让它工作的唯一方法。

与其他响应相反,可能需要降低内存限制。如果有许多同时请求,您会更快地耗尽所有内存(尽管在大多数情况下它不会很明显)。

我的意思是,这只是一个好习惯——有时每个字节都很重要。

顺便说一句,第二个error_reporting和第二个set_time_limit什么都不做。

$reporting = error_reporting(E_ERROR);
// some code
error_reporting($reporting);

也许你是这样的?

于 2012-09-07T06:34:02.580 回答
0

这样做是可以的,但不要将其设置得比需要的高。您应该对 PHPExcel 可以生成的行/列数设置一个限制,然后在该限制下测试系统的内存使用情况。

正如@duskwuff 所说,您不需要运行 ini_set 两次。它会将自己设置回您的系统配置。

于 2012-09-07T06:38:55.027 回答