【问题标题】:What does this php return code (-11) mean (subprocess.call'ed from python)?这个php返回码(-11)是什么意思(subprocess.call'ed from python)?
【发布时间】:2013-08-01 19:25:53
【问题描述】:

短版

我想,在python中,subprocess.call(['php', '/path/somescript.php']),php脚本的第一行基本上是"echo 'Here!';"。但是subprocess.call 返回错误代码-11,并且 php 脚本无法执行其第一行并将任何内容回显到输出。这一切都发生在 Ubuntu Server 12.04.2 和 Ubuntu Desktop 12.04.2 上。

谁能指出-11 返回码的含义? (是来自python、系统还是php命令?

有几次,我看到它深入到 php 脚本中,然后通过打印“zend_mm_heap 已损坏”并返回 1 而失败。

更描述性的问题版本:

我有一个 python 脚本,在使用 subprocess.call(['phpunit', ...]) 运行一些 phpunit 测试后,我想运行另一个 php 脚本来收集运行测试时收集的代码覆盖率数据,方法是执行 subprocess.call(['php', '/path/coverage_collector.php'])

几个月来,脚本运行良好,但今天,在添加了几个文件和测试后,它开始失败(不是 100% 的时间,大约 5-10% 的时间它工作)。

当它失败时,subprocess.call 返回-11,并且coverage_collector.php 的第一行没有设法将其消息回显到标准输出。有几次它深入到 php 脚本中,但失败并出现错误代码 1 并打印了 "zend_mm_heap corrupted"

我有一个目录结构,其中每个文件夹可能包含子文件夹,每个文件夹执行其单元测试,然后收集该文件夹及其子文件夹的覆盖率数据。

该脚本适用于所有文件夹及其子文件夹(执行所有测试并收集所有覆盖范围),并且过去也适用于根级文件夹(目前适用于许多较小的项目具有完全相同的结构和脚本) - 直到今天,在一个足够无辜的代码签入后它开始失败之后,使用该脚本向其中一个 php 项目添加了一些文件和测试。

奇怪的是它在这个奇怪的地方失败了——在尝试调用 php 命令时,甚至没有执行 php 脚本的第一行,而这发生在同一个 php 脚本执行几秒钟后许多其他文件夹,工作正常。

我怀疑这可能是因为根级别脚本只是有更多数据要处理 - 将它自己的覆盖范围与所有子文件夹的覆盖范围相结合(这可能解释了 zend 堆损坏,当这种情况发生时) ,但这仍然不能解释为什么大多数时候调用会以-11 失败,并且甚至不会让 php 脚本开始收集覆盖率数据。

有什么想法吗?

【问题讨论】:

  • 从命令行调用php脚本会失败?
  • 您是否查看过 PHP 脚本的代码以查看它是否以 -11 的代码退出?
  • 是的,它也从命令行失败 - 这是一个嫌疑犯,谢谢。
  • 马克 - 没有调查所有库调用的来源,是的,他们可能会。但是,我试了一下并使用 ini_set('memory_limit', '2048M'); 请求更多内存。在脚本的开头,它似乎奏效了 - 到目前为止,我已经连续 3 次成功构建。我想这只是 PHP_CodeCoverage_Report_HTML 处理的覆盖率数据过多的问题。我想知道为什么脚本失败时我从来没有得到任何输出(在将事情交给 PHP_CodeCoverage_Report_HTML 之前它应该回显很多),但是,无论如何,我认为我现在已经控制了它。谢谢。

标签: php python call command-line-interface


【解决方案1】:

似乎是由于覆盖率数据过多导致 PHP_CodeCoverage_Report_HTML 耗尽。不知道为什么 php 脚本输出被抑制,这让我相信脚本从未运行过。

使用 ini_set('memory_limit', '2048M'); 请求更多内存后在 php 脚本开始时,成功率显着提高(目前已成功构建 5/6)。

我想我需要在 php/zend 中使用内存管理来正确处理这个问题。

【讨论】:

    猜你喜欢
    • 2018-01-31
    • 2011-05-28
    • 2011-04-27
    • 2014-10-31
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多