节点发射到PHP完成但继续工作

时间:2016-09-21 11:39:35

标签: php node.js

我有一个正在nodejs中运行的工作。这项工作大约需要40-50秒。

我必须在Laravel框架中运行php中的工作。

$_commands = [
    'echo "end deploy"',
    'echo "Starting script_j release=dev"',
    'node script_j release=dev',
    'echo "Finished script_j release=dev"'
];
foreach( $_commands AS $command )
{
    $tmp = \exec($command);
}
exit();

我可以通过将exec命令更改为

来改善php脚本的运行时间
\exec("$command > /dev/null 2>/dev/null &");

但是有没有办法指示nodeJs脚本向php exec函数发送一个nodejs脚本完成但后来继续工作的信号。

也就是说你在使用express的节点应用程序中执行相同的方式...发送res.json()但继续功能...

提供线程的包:https://github.com/audreyt/node-webworker-threads

var worker = new Worker(function(){
    postMessage("I'm working before postMessage('ali').");
    this.onmessage = function(event) {
        postMessage('Hi ' + event.data);
        self.close();
    };
});
worker.onmessage = function(event) {
    setTimeout(function(){
        console.log("Worker said : " + event.data);
    }, 5000);
};
worker.postMessage('ali');

但是,当您从终端调用此脚本时,您无法再次控制终端,直到父进程和子进程完成为止。

通过在脚本末尾添加process.exit();来终止父任务,并且调用脚本的终端再次被用户响应,但这也会导致子进程终止console.log打印任何东西。

0 个答案:

没有答案