我可以在 composer json 中指定 php 内存限制要求吗?也许在“config.platform”节点中?答案

作者: 分类: 编程代码 时间:1970-01-01

我可以在 composer json 中指定 php 内存限制要求吗?也许在“config.platform”节点中?答案

Can I specify php memory limit requirements in composer json? Perhaps in the "config.platform" node?我可以在 composer json 中指定 php 内存限制要求吗?也许在“config.platform”节点中?

我刚刚遇到内存限制错误,我在 .ini 文件中解决了它。不用担心。但是,我想在我的包 composer.json 中放一些东西来表明需要一些最小内存。我知道如何在 composer.json 中指定 php 版本要求 - 我只是想知道 composer 是否可以添加/检查其他平台要求。

【问题讨论】:

标签: php composer-php


【解决方案1】:

Composer 可以检查软件以验证它们是否对应。但是,它不会检查系统(CPU、内存...)。您可以在 readme.md 文件中指定要求。

您可以在代码中添加脚本所需的内存限制。但是,一般来说,默认的内存限制就足够了。您可能有可以通过添加 yeld 或迭代器来优化的循环。

【讨论】:

  • 嗨svgta,你熟悉这种composer.json节点吗? "config": {"platform": {"php": "7.4"} 我想在包 composer 文件中提供内存要求。你知道怎么做吗?能做到吗?
  • 不,您不能在作曲家中指定内存要求。这就是为什么你必须在你的包中放入一个包含所需内容的 readme.md 文件。
  • 好吧,像塞巴斯蒂安/泰勒/马特/等这样的人偶尔会提出这些问题,所以我会留下问题。也许他们会改变作曲家。一些对 ini 的要求可能不是他们听过的最愚蠢的事情。
  • Nils 和 Jordi 将是这种情况下的相关名称,我不记得在这里看到过他们中的任何一个。你***在github.com/composer/composer/issues提出一个实际的功能请求
【解决方案2】:

将一个小的 php 文件添加到您的作曲家项目或包中。

composer.json

{
    ... 
    "autoload": {
        ...
        "files": ["custom_ini.php"]
    }
}

custom_ini.php

ini_set('memory_limit','1000M');
...

【讨论】:

    【解决方案3】:

    complete list of properties available in composer.json 有很好的记录。

    唯一对用户系统提出要求的是require 部分。这可以包括platform dependencies(也讨论过on the "basic usage" page),以暴露PHP 版本、其扩展和相关库以及Composer 本身的虚拟包的形式。尽管您可以启用额外的platform check,但这些都是作为依赖关系解析过程的一部分而不是在应用程序运行时解析的。

    请注意,config 部分配置 Composer 本身的行为,而不是包,并被标记为“仅根” - 也就是说,当另一个项目使用您的库时,它甚至不会被读取。您提到的platform option 与平台要求相反:它告诉 Composer 假装某些约束得到满足,即使它们不满足。

    如果您想在运行时验证特定配置是否到位,而不仅仅是记录它,您可以使用 ini_get 等函数轻松编写自己的配置。这可以作为一些相关对象或函数的初始化的一部分运行,或者列为file include in the autoload section,以便它始终在应用程序启动时执行。

    【讨论】: