open cart导入/导出工具内存不足

时间:2014-02-11 18:25:25

标签: memory import export opencart

我遇到了免费开放式购物车模块的问题,希望能得到一些帮助。

使用导入/导出工具时,我收到以下错误

“致命错误:在第126行的/home3/haas12/public_html/breslovcenter.org/system/PHPExcel/Classes/PHPExcel/Style/Supervisor.php中,允许的内存大小为268435456字节(尝试分配25165824字节)”

我只有大约700个项目,我的xlsx文件只有291k,但它在错误消息中说256MB。

我创建了一个php信息文件,它位于: http://breslovcenter.org/phpinfo.php

任何人对如何解决此问题都有任何想法?任何帮助将不胜感激。我猜这个问题必须是由于一些错误导致内存泄漏。我有点卡住,不知道该怎么做。

3 个答案:

答案 0 :(得分:0)

文件可能很小,但PHP使用大量内存/处理来打开excel文件。虽然它确实看起来像很多内存,但它因为出现这个问题而众所周知,你需要增加内存限制或找到更好的导入方式(还有很多其他导入方法,它们不太方便)

答案 1 :(得分:0)

错误消息:

  

致命错误:允许的内存大小为268435456个字节(尝试分配25165824个字节)......

这表示您的Apache服务器允许PHP的内存大小为268435456 bytes(256 MB)。 Apache服务器可能打开的所有可能线程之间共享此内存。您的脚本正在尝试分配25165824 bytes(24 MB)以上(但每个请求可能会有所不同,具体取决于加载文件大小)。

PHPExcel虽然是用于处理XLS(X)文件的优秀PHP扩展,但却有一个重要的缺点 - 需要大量资源,尤其是内存。在具有32或64 MB允许内存大小的共享主机上,甚至没有机会运行此扩展。

解决方案

  1. 如果您有机会修改PHP的内存限制,请执行此操作。打开您的php.ini文件并搜索memory_limit设置。现在应该是memory_limit 256M - 将其更改为例如此值:memory_limit 350M或甚至512M如果您想完全确定将来不会发生这种情况。如果您可以使用ini_set()指令从PHP脚本中修改PHP设置,那么仅在导入脚本中使用这可能更好,这样就不会为每个请求分配太多无用的内存: ini_set('memory_limit', '350M'); - 最好将此名称作为导入脚本中的第一行。
  2. 如果选项1不可用(您无权访问或修改主机上的PHP设置),则另一种可能性是将XLS(X)文件导出为CSV文件并从CSV导入数据这可能不太舒服,但肯定会尽可能少地使用资源。

答案 2 :(得分:0)

正如Jay Gilford所说,PHPExcel因此问题而闻名。您可以尝试:

编辑php.ini文件

如果您的网站托管在共享服务器上,或者您无权访问PHP配置,则需要修改两个' php.ini' OpenCart安装中的文件。第一个位于OpenCart安装的根文件夹中,第二个位于' / admin'夹。变化:

memory_limit = 64M;

要:

memory_limit = 256M;

如果您使用的是共享服务器,则可能会对您的提供商施加限制(根据经验1& 1约为80MB),这将超越这些“php.ini”#39;文件,在这种情况下,如果你想增加PHP内存限制,你可能需要升级到专用服务器或VPS。

增加服务器上的PHP内存限制

如果您可以访问服务器PHP配置,则可以通过控制面板或SSH直接在服务器上增加PHP内存限制。您很可能需要重新启动服务器才能使更改生效。

当然,删除一些旧产品可以解决问题并释放一些内存使用,但是一旦你恢复到同一级别,你将再次遇到问题。或者你可以尝试不同的扩展,这不是那么耗费内存,但是这个扩展的导入/导出功能似乎仍然是最好的。