2016-07-20 1 views
0

나는 phantomjs로 yslow.js를 excute하기 위해 child_process를 사용합니다. 예 (CLI) :nodejs execFile 콜백 매개 변수 "stdout"의 최대 길이는 얼마입니까?

phantomjs yslow.js --info all --format json url 

우리가 분석 한 후 나에게 돌아 yslow.js 분석적인 데이터를 얻을 수 있습니다.

가끔 yslow.js 데이터가 완전한 json 파일이 될 수 없습니다. 콜백 매개 변수가 "stdout"너무 큰 길이의 데이터가 될 수없는 것 같습니다. 데이터가 너무 큰 경우 매개 변수 stdout을 감염시킬 수 있습니다 ...

누구도 그런 문제가 발생 했습니까?

답변

0

청크별로 데이터를 보낼 수있는 경우 exec 대신 spawn을 사용하십시오. 그렇지 않으면 임시 파일을 통해 데이터를 보낼 수 있습니다. 또한 웹 소켓을 사용하여 노드와 팬텀 사이의 채널을 생성 할 수 있습니다.

0

질문이 해결되었습니다. child_process는 maxbuffer 옵션을 지원합니다. 다음과 같이 할 수 있습니다.

child_process.execFile(file, [args], {maxBuffer: 1024 * 102400 }, function(err, stdout, stderr) { 
     if(stderr){ 
      console.log(stderr); 
     }else { 
      console.log(stdout); 
     } 
    }); 
관련 문제