Node.js를 통해 SQL Server에 대한 쿼리를 호출하는 웹 앱이 있습니다.
일반적으로 1-2 초가 소요되는 클라이언트에서 쿼리를 실행하고 싶지만 일부 특수한 경우에는 최대 1 분 30 초가 걸릴 수 있습니다.
클라이언트는 XHR 요청에 대한 응답을 원하고 1 분 30 초를 기다리기를 원하지 않습니다. 응답이 무엇을 말하든 상관하지 않습니다.
쿼리는 openquery를 통한 삭제 문입니다. 결과를 다시 기대하지 않습니다.
결과에 관계없이 삭제 문과 같은 것을 실행 한 다음 완료되기 전에 쿼리에 대한 응답을 반환하는 방법이 있습니까? 그런 건 들어 본 적이 없어서 어디를보아야할지 모르겠지만 지금까지 찾을 수 없습니다.
다른 많은 언어에서 대답에는 스레딩이 포함되지만 js는 스레드를 지원하지 않기 때문에 설명하는 것과 같은 비동기 반환을 생성하기 위해 프로세스와 작업해야합니다.
앱 에서 호출 된 REST / Web API 함수에서 하위 프로세스 를 생성 하고 클라이언트에 결과를 반환합니다. 이 체계는 삭제 쿼리의 실행 시간에 대한 종속성을 분리합니다. 하위 프로세스가 2 초 또는 2 분 내에 실행 되든 관계없이 클라이언트는 원하는대로 차이를 알지 못하며 결과는 거의 즉각적으로 보입니다.
간단한 샘플과 같은 다른 자원을 제공하고 있습니다 이것 과 이것을 사용할 수 등.
Nodejs에서 자식 프로세스를 실행하기위한 간단한 코드 샘플 :
var exec = require('child_process').exec;
exec('node -v', function(error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
코드가 더 간단 해 보일 수 있도록 in / out / error 스트림을 신경 쓰지 않거나 필요하지 않을 수도 있습니다. 이 같은:
var exec = require('child_process').exec;
exec('node -v', function() {
// put your delete code here
});
이 섹션은 아래 주석에서 추가 및 수정되었습니다.
SQL Server에서 비동기 작업을 시작하는 유일한 방법은 쿼리, sproc 등의 실행을 예약하는 것입니다.하지만 그것은 추악한 해킹입니다. 클라이언트에서 프로그래밍 방식으로이를 수행 할 수있는 네이티브 API가 있지만 시작 위치로 돌아갑니다.
어쨌든 UI / UX와 백엔드간에 만들 수있는 긴밀한 결합 때문에 SQL에서이 기능을 구현하지 않는 것이 좋습니다. 그리고 자식 프로세스 솔루션을 구현하기 위해 node.js에 대한 심층 분석이 필요하다고 생각하지 않습니다. 특히 결과에 신경 쓰지 않는 경우 매우 간단합니다. 간단한 발사와 잊어.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다