2016-07-20 19 views
0

Ich benutze child_process, um yslow.js von phantomjs zu execute. Beispiel (CLI):Was ist die maximale Länge von nodejs execFile Callback-Parameter "stdout"?

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

Wir können die analytischen Daten erhalten, die nach der Analyse zu mir zurückkehren yslow.js.

Aber manchmal die Daten yslow.js zu mir zurückkommen kann nicht eine vollständige JSON-Datei sein. Scheint, die Callback-Parameter "stdout" können nicht zu große Daten sein. Ich denke, wenn die Daten zu groß sind, infizieren die Parameter stdout ...

Hat jemand jemals ein solches Problem begegnet?

Antwort

0

Wenn Sie Daten per Chunk senden können, verwenden Sie spawn anstelle von exec. Ansonsten können Sie Daten über eine temporäre Datei senden. Außerdem können Sie mit WebSockets einen Kanal zwischen Knoten und Phantom erstellen.

0

Die Frage ist gelöst. child_process unterstützt die Option maxbuffer. Wir können das tun:

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