您好,我面临允许内存大小错误的问题。我已经在 codeigniter、php 中创建了项目,并且我使用了 Tbs 库。它工作正常,但今天它显示错误:
致命错误:第 4222 行 /home/abc/public_html/application/libraries/Tbs.php 中允许的 67108864 字节内存大小已用尽(尝试分配 258010 字节)
请给我任何建议。
您好,我面临允许内存大小错误的问题。我已经在 codeigniter、php 中创建了项目,并且我使用了 Tbs 库。它工作正常,但今天它显示错误:
致命错误:第 4222 行 /home/abc/public_html/application/libraries/Tbs.php 中允许的 67108864 字节内存大小已用尽(尝试分配 258010 字节)
请给我任何建议。
当您没有足够的内存供 php 查询运行时,“允许的 XXXXXX 字节的内存大小已用完”是一个典型的错误,正如它自己的名字所说的那样。
尝试memory_limit
在您的文件上升级变量php.ini
,或者通过ini_set('memory_limit', 'XXXM');
在您正在运行的 PHP 文件上进行设置,将 XXX 设置为您要定义的 Mb 内存量。
如果不是这种情况,您的软件中可能存在导致错误的错误,即在没有任何控制的情况下消耗内存的循环;但正如你所说,它以前确实有效......
无论如何,请检查 StackOverflow 在这方面的所有其他答案:
如果您使用 TBS + OpenTBS 来合并 XLSX 文件,那么 OpenTBS 版本 1.9.2 修复了一个已知问题:如果要合并的行数很多,那么您可能会有一个很长的过程或一个调用时内存大小错误$TBS->Show()
。
使用针对这一点优化的 OpenTBS 1.9.2 或更高版本,如果过程仍然很长,您可以使用OPENTBS_RELATIVE_CELLS命令进行更多优化。
通常,当您的脚本使用太多内存时,会发生这种类型。如果您有一个失控的循环并且您在循环的每次通过时创建对象或添加到数组中,这通常会在 PHP 中发生。检查无限循环。
如果这不是问题,请尝试通过将已完成的对象设置为 null 来销毁对象来帮助 PHP,例如。$OldVar = 空值;。
检查错误实际发生的代码。您是否希望该行分配大量内存?如果没有,请尝试找出问题所在。
永远不要在你的 php.ini 文件中升级 memory_limit 变量,或者通过设置 ini_set('memory_limit', 'XXXM'); 在您正在运行的 PHP 文件上,XXX 是您要定义的 Mb 内存量。让应用程序吃掉他想要的内存是疯狂的一步。尝试找出错误,您的应用程序是否需要那么多内存?查出