【问题标题】:Allowed memory size error in Tbs libraryTbs 库中允许的内存大小错误
【发布时间】:2015-08-27 05:50:13
【问题描述】:

您好,我遇到了允许内存大小错误的问题。我已经在 codeigniter、php 中创建了项目,并且我使用了 Tbs 库。它工作正常,但今天它显示错误:

致命错误:允许的内存大小为 67108864 字节已用尽(尝试分配 258010 字节) /home/abc/public_html/application/libraries/Tbs.php 上线 4222

请给我任何建议。

【问题讨论】:

    标签: php codeigniter tinybutstrong


    【解决方案1】:

    如果您使用 TBS + OpenTBS 来合并 XLSX 文件,那么 OpenTBS 版本 1.9.2 修复了一个已知问题:如果要合并的行数非常多,那么您可以有一个很长的调用$TBS->Show()时出现进程或内存大小错误。

    使用针对这一点优化的 OpenTBS 1.9.2 或更高版本,如果过程仍然很长,您可以使用OPENTBS_RELATIVE_CELLS 命令进行更多优化。

    【讨论】:

      【解决方案2】:

      “已用完 XXXXXX 字节的允许内存大小”是一个典型的错误,当您没有足够的内存供 php 查询运行时,正如它自己的名字所说的那样。

      尝试在您的php.ini 文件上升级memory_limit 变量,或者通过在您正在运行的PHP 文件上设置ini_set('memory_limit', 'XXXM');,XXX 是您要定义的Mb 内存量。

      如果不是这种情况,您的软件中可能存在导致错误的错误,即在没有任何控制的情况下消耗内存的循环;但正如你所说,它之前确实有效......

      无论如何,请检查 StackOverflow 关于这方面的所有其他答案:

      Fatal Error: Allowed Memory Size of 134217728 Bytes Exhausted (CodeIgniter + XML-RPC)

      CodeIgniter Fatal error: Allowed memory size of bytes exhausted

      Codeigniter - Allowed memory size exhausted while uploading

      【讨论】:

      • 我应该在哪里写 'ini_set('memory_limit', 'XXXM');'因为我的项目在服务器中所以我没有 php.ini 文件。我必须联系我的主机,所以我可以在我的 htaccess 文件中写吗?
      • 不,memory_limit 应该只写在 PHP.ini 文件上。
      • 另外,ini_set 函数应该添加到你的 PHP 文件或头文件的顶部 :)
      【解决方案3】:

      当您的脚本使用过多内存时,通常会出现这种情况。如果您有一个失控的循环并且您在循环的每次通过时创建对象或添加到数组中,这通常会在 PHP 中发生。检查无限循环。

      如果这不是问题,请尝试通过将已完成的对象设置为 null 来销毁对象来帮助 PHP,例如。 $OldVar = null;.

      检查错误实际发生的代码。您是否希望该行分配大量内存?如果没有,请尝试找出问题所在。

      永远不要在你的 php.ini 文件中升级 memory_limit 变量,或者通过设置 ini_set('memory_limit', 'XXXM');在您正在运行的 PHP 文件上,XXX 是您要定义的 Mb 内存量。让应用程序吃掉他想要的内存是疯狂的一步。尝试找出错误,您的应用程序是否需要那么多内存?找出来

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-22
        • 2023-03-20
        • 2015-09-18
        • 2023-04-03
        • 1970-01-01
        • 2013-06-14
        相关资源
        最近更新 更多