PHP中exec()命令的限制?

时间:2015-03-01 09:18:51

标签: php exec

我在PHP中使用exec命令来执行C ++代码,其中record_generate.cpp是基于硬编码参数生成输出(100到数百万条记录)的代码。

exec('./record_generater 2>&1', $output);
print_r($output);

当输出线的数量限制为几千时,它会产生输出,但当它达到100,000到百万时,它似乎会崩溃。我怎么能避免这样的pblms?

1 个答案:

答案 0 :(得分:1)

你应该做的第一个事情是看看从shell运行C ++程序是否会导致类似的问题。

如果是这样,那么C ++代码本身就存在问题,与PHP exec无关。

如果它独立运行,那么它可能与将数百万条记录存储到$output变量有关。

虽然PHP中的字符串可能非常大(内存为2G),但是memory_limit_ in the php.ini`文件指定的脚本可用的空间有限。

即使在128M(5.2之前的8M),这可能还不足以容纳数百万行。

您可以尝试将该变量增加到更大的值并查看它是否有帮助。

但是,您可能仍然会更好地找到一种不同的方式来将C ++可执行文件中的信息转换为PHP代码,例如将其写入文件/数据库并在PHP中处理它一次一点,而不是试图将这一批存储在内存中。

在任何情况下,考虑到无论如何不必查看数百万行并不是一个好的用户体验,因此从这些数据中检查您真正需要的内容可能是值得的。例如,可以在输出之前以某种方式对其进行聚合或分区。

我们在这方面给出的任何建议都需要比我们目前更多的信息。