【发布时间】:2011-12-19 05:40:39
【问题描述】:
我看到命令行中的“getconf ARG_MAX”返回一个大数字(2,097,152 字节),而我传递给 exec 的参数只是其中的一小部分(229,650),但我的 exec 一直在死去,我不能找出原因。它适用于传入的较小参数。
示例代码: $strReallyLongParamList = 'ARG1 ARG2-IS-200K ARG3 ARG4'; exec('/path/to/my/background-process.php '.$strReallyLongParamList); //从后台进程.php 记录从未发生过...代码似乎在 exec 调用中死了
PHP 是在内部受到限制还是只是将所有内容传递给 Ubuntu?
我已经将我的 exec 调用分块成更小的批次并且所有的工作都很好,所以看起来我在 PHP exec 中遇到了某种类型的限制。
【问题讨论】:
-
一些示例代码会很好,请编辑您的问题
-
也许你最好把所有的逻辑放到一个shell脚本中并通过
exec()执行? -
如果你甚至不得不考虑如果你的参数列表太长,你真的应该考虑使用标准输入来传递那些长参数......
-
我在使用 drush 命令和 --structure-tables-list="field*" 时遇到了同样的问题,其中有数百个以 field 开头的表。知道那个 229650 数字是从哪里来的吗?
标签: php bash ubuntu background-process