【问题标题】:How to pass data from PHP to Node?如何将数据从 PHP 传递到 Node?
【发布时间】:2013-10-26 19:56:17
【问题描述】:

这就是我现在正在尝试的:

PHP

shell_exec('node bin/gfm.js '.escapeshellarg($code))

Node.js

console.log(process.argv[2]);

但 Node 似乎只接收$code 的第一行,因此escapeshellarg 似乎没有正确转义换行符。

我还能怎么做?我可以使用stdin,如果这样更容易的话,但它在 PHP 和 Node 端看起来都很复杂。

【问题讨论】:

    标签: php node.js


    【解决方案1】:

    花了一些时间,但我想我明白了:

    PHP

    $spec = array(
        0 => array("pipe", 'r'),  
        1 => array("pipe", 'w'), 
    );
    
    $proc = proc_open('node bin/gfm.js', $spec, $pipes);
    fwrite($pipes[0], $code);
    fclose($pipes[0]);
    $resp = stream_get_contents($pipes[1]);
    fclose($pipes[1]);
    proc_close($proc);
    
    echo $resp;
    

    Node.js

    var fs = require('fs');
    
    var size = fs.fstatSync(process.stdin.fd).size;
    var buffer = size > 0 ? fs.readSync(process.stdin.fd, size)[0] : '';
    
    console.log(buffer);
    

    信用:Sigmund

    【讨论】:

      猜你喜欢
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 2020-12-12
      • 2010-11-01
      • 2013-08-20
      • 2019-10-05
      相关资源
      最近更新 更多