Nodejs サービスを閉じる

WBOY
WBOYオリジナル
2023-05-28 09:19:07718ブラウズ

Node.js は、開発者が JavaScript 言語を使用してサーバー側のコードを作成できるようにする非常に強力な JavaScript ランタイム環境です。 Node.js は、Web アプリケーション、API サービス、メッセージ キュー、ソケット サービスなど、さまざまなサーバーサイド プログラムを簡単に開発できます。ただし、Node.js サービスを停止またはシャットダウンする必要がある場合はどうすればよいでしょうか?この記事では、実行中の Node.js サービスを停止またはシャットダウンするのに役立つ実用的なヒントをいくつか取り上げます。

実行中の Node.js サービスを停止する

Node.js では、プロセス オブジェクトを使用して、現在のプロセスの情報を表示したり、現在のプロセスの実行を制御したりできます。実行中の Node.js サービスを停止するには、プロセスにシグナルを送信してサービスを強制終了します。 Linux または Unix システムでは、kill コマンドを使用してプロセスにシグナルを送信できます。たとえば、次のコマンドは SIGTERM シグナルを 12345 プロセスに送信できます。

$ kill -SIGTERM 12345

Node.js では、 process.kill メソッドを使用して現在のプロセスにシグナルを送信できます。たとえば、次のコードを使用して、SIGTERM シグナルを現在のプロセスに送信できます。

process.kill(process.pid, 'SIGTERM');

Node.js がシグナルを受信すると、プロセス オブジェクトの終了イベントがトリガーされます。このイベントをリッスンして、データベース接続の終了、データの保存などのクリーンアップ操作を実行できます。サンプル コードは次のとおりです。

// 在应用程序开始时,监听 SIGTERM 和 SIGINT 信号
process.on('SIGTERM', shutdown);
process.on('SIGINT', shutdown);

// 定义 shutdown 函数
function shutdown() {
  console.log('Received signal, shutting down...');
  // 做一些清理工作
  // 关闭数据库连接、保存数据等等
  process.exit();
}

上記のコードは、アプリケーションの起動時に SIGTERM および SIGINT シグナルをリッスンします。信号を受信すると、メッセージが出力され、シャットダウン機能が実行されます。データベース接続の終了、データの保存など、シャットダウン関数で実行するいくつかのクリーンアップ操作を追加できます。最後に、process.exit() メソッドを使用してプロセスの実行を終了します。

HTTP サーバーをオフにする

Node.js を使用して Web アプリケーションを開発する場合、HTTP サーバーをオフにする必要がある場合があります。 Node.js では、http.Server クラスを使用して HTTP サーバーを作成できます。サーバー インスタンスを作成した後、close メソッドを使用してサーバーをシャットダウンできます。たとえば、次のコードは次のとおりです。

const http = require('http');

const server = http.createServer((req, res) => {
  res.end('Hello World!');
});

server.listen(3000, () => {
  console.log('Server is started...');
});

// 在 10 秒后关闭服务器
setTimeout(() => {
  console.log('Closing server...');
  server.close();
}, 10000);

上記のコードは、HTTP サーバーを作成し、サーバー オブジェクトの close メソッドを呼び出してサーバーをシャットダウンします。サーバーをシャットダウンする前に、処理中のリクエストが失敗する原因となる強制停止を避けるために、サーバーに現在のリクエストの処理を終了させる必要があることに注意してください。サーバーをすぐに停止し、処理中のリクエストを閉じたい場合は、destroy() メソッドを使用できます。

server.on('connection', (socket) => {
  socket.on('close', () => {
    console.log('Connection is closed...');
  });
});

setTimeout(() => {
  console.log('Closing server and destroying all sockets...');
  server.destroy();
}, 10000);

上記のコードは、サーバーを直ちにシャットダウンし、destroy() メソッドを呼び出して、処理中のすべての接続を処理します。 destroy() メソッドを使用する場合、close() メソッドを使用してサーバーをシャットダウンすることはできなくなることに注意してください。

概要

この記事では、実行中の Node.js サービスを停止またはシャットダウンする方法を紹介しました。プロセスにシグナルを送信してプロセスを終了することも、close() メソッドを使用して HTTP サーバーを閉じることもできます。プロセスまたはサーバーをシャットダウンする前に、現在のリクエストを処理する必要があることに注意してください。これらのヒントが、Node.js サービスを迅速かつ簡単に停止またはシャットダウンするのに役立つことを願っています。

以上がNodejs サービスを閉じるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。