从PHP运行Node.js脚本-输出被截断为512个字符
我们使用Symfony进程从PHP运行node.js CLI脚本 脚本总是在一行中将整个响应打印为JSON 响应以某种方式被截断为512个字符 我只在从PHP运行Node.js脚本-输出被截断为512个字符,php,node.js,symfony,firebase-authentication,symfony-process,Php,Node.js,Symfony,Firebase Authentication,Symfony Process,我们使用Symfony进程从PHP运行node.js CLI脚本 脚本总是在一行中将整个响应打印为JSON 响应以某种方式被截断为512个字符 我只在php.ini中发现xdebug.var\u display\u max\u data=>512=>512,但没有看到这两者之间的关系 Adapter > Symfony Process > node script.js A)测试节点脚本 从终端节点脚本$node user-update.js parameters返回所有情况下的完整
php.ini
中发现xdebug.var\u display\u max\u data=>512=>512
,但没有看到这两者之间的关系
Adapter > Symfony Process > node script.js
A)测试节点脚本
$node user-update.js parameters
返回所有情况下的完整结果,如629个字符$process = new Process($cmd);
try {
$process->mustRun();
$response = $process->getOutput();
} catch (ProcessFailedException $e) {
$response = $e->getMessage();
}
echo $response;
echo PHP_EOL;
echo strlen($response);
$response = shell_exec($cmd); // response is truncated to 512
system($cmd, $returnVal); // print directly to STDOut, truncated to 512
$cmd='node user-update.js parameters'代码>-截断为512
$cmd='php-r\$i=0;$i我怀疑您的进程在php读取缓冲区之前就结束了
作为解决方案,您可以添加以下内容:
// The `| cat` at the end of this line means we wait for
// cat's process to end instead of node's process.
$process = new Process('node user-update.js parameters | cat');
我将从nodejs应用程序的调试开始。它将从终端返回预期的完整结果。如果请求的结果较短,它将从主PHP方法正常工作。例如,如果AuthUser没有photoURL
或longdispalyName
,则响应小于512个字符,进程(PHP)获取完整有效的JSON-一切正常。PHP7.1.2(cli)(构建时间:2017年2月23日23:40:22)(NTS)
Dirty fix是运行$cmd='node script.js>。$tmp;
,而不是cat$tmp;
,或者使用PHP读取它,并删除$tmp文件。希望得到真正的答案。删除xdebug
没有任何更改。