Ejemplo 1: proceso en segundo plano:
Archivo api.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 dieciséis 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 'use strict' const fs = require( 'fs' ) module.exports = (req, res) => { if (!req.params.action) { res.end( '' ); return ; } switch (req.params.action){ case 'import' : var u = req.query.u; var p = req.query.p; var db = req.query.db; var file = req.query.file; console.log(u,p,db,file) const { spawn } = require( 'child_process' ); const iinn = fs.openSync(file, 'r+' ); const subprocess = spawn( '/usr/bin/mysql' , [ '-u' + u, '-p' + p, db ], { detached: true , stdio: [ iinn ] }); subprocess.unref(); res.end() break } } |
Enlace de ejemplo: http://tutorialspots.com/api/import?u=admin_tutorialspots&p=tutorialspots&db=admin_tutorialspots&file=/root/tutorialspots.sql
Ejemplo 2: evento cuando se realiza la importación
Archivo api.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 dieciséis 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 'use strict' const fs = require( 'fs' ) module.exports = (req, res) => { if (!req.params.action) { res.end( '' ); return ; } switch (req.params.action){ case 'importdone' : var u = req.query.u; var p = req.query.p; var db = req.query.db; var file = req.query.file; console.log(u,p,db,file) const { spawn } = require( 'child_process' ); const iinn = fs.openSync(file, 'r+' ); const subprocess = spawn( '/usr/bin/mysql' , [ '-u' + u, '-p' + p, db ], { stdio: [ iinn ] }); subprocess.on( 'close' , (code) => { console.log(`child process close all stdio with code ${code}`); res.end() }); break } } |
Enlace de ejemplo: http://tutorialspots.com/api/importdone?u=admin_tutorialspots&p=tutorialspots&db=admin_tutorialspots&file=/root/tutorialspots.sql
0 Comentarios
Dejanos tu comentario para seguir mejorando!