【发布时间】:2019-07-11 09:26:42
【问题描述】:
我有一个 PHP 文件,它使用 exec() 运行节点脚本来收集输出,如下所示:
$test = exec("/usr/local/bin/node /home/user/www/bin/start.js --url=https://www.example.com/");
echo $test;
它在 --url 参数中输出与网站相关联的 JSON 数据字符串。效果很好,但有时输出字符串会被缩短。
当我直接在 exec() 脚本中运行命令时,我得到了完整的输出,正如预期的那样。
为什么会这样?我也尝试过运行 shell_exec(),但同样的事情发生在输出被缩短时。
在 php.ini 或其他地方是否有设置来增加输出字符串的大小?
【问题讨论】:
-
它是如何自动运行的(web、cron)?它工作时需要运行多长时间? php中的字符串很大stackoverflow.com/questions/3189040/…
-
对 PHP 的内部工作原理不够熟悉,但听起来可能是缓冲问题。
-
这样做有什么规律或理由吗?使用 same URL 重新运行是否正常?或者对于某些 URL 是否一致?
-
不,使用有问题的相同 URL 重新运行总是会缩短。我注意到的唯一一件事是字符串的长度在失败的 URL 上要大得多。
-
确实注意到只有当部分输出包含对base64数据的引用时,输出才会被缩短,例如
"fonts":{"amount":6,"files":["data:application/x-font-woff2;base64,d09GMgABAAAAAFEAABIAAAAAxMwAAFCZAAFND....
标签: php