質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

3回答

3423閲覧

Ajax通信中断時にサーバーサイドの処理も中断する方法

faa

総合スコア1

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2021/07/08 05:07

編集2021/07/28 04:04

前提・実現したいこと

ajaxを使ってDBに検索をかけて画面の一部を更新するweb画面を作成しています。
処理実行中に画面を移動した時にはサーバー側で処理が続きますが、この処理を中止する方法はないでしょうか?
※処理中断ボタンの設置や、タイムアウトの設定など何でもいいですが、プログラム上で完結する方法でお願いします(管理画面からkillはNG)。

狙いとしては、ユーザーが処理の長さにしびれを切らして画面を閉じた時にサーバーで走り続ける処理を消すことにより、
サーバーの負荷を軽くしたいというものです。

試したこと

abort()を試しましたが、クライアントとサーバーとの通信が切れるだけでサーバー側の処理が続くため解決策になりませんでした。

補足情報(FW/ツールのバージョンなど)

webサーバーにはIISを使用しています。

2021/07/26
しばらく試せそうにないため一旦クローズとします。
進展有れば追記します。
ご回答ありがとうございました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/07/21 00:23

質問者さん、無言になってしまいましたが、自分で立てたスレッドを放置しておかないで、レス・回答に対するフィードバックを書いて、クローズするところまでちゃんとやってください。無言で放置はすべての閲覧者・回答者に失礼。
faa

2021/07/21 02:41

すみません。 junerさんから頂いた内容を基に、回答した通り実施することにしたのですがすぐに実施ができない状態になりました。 実装してみたら結果を書く予定です。
退会済みユーザー

退会済みユーザー

2021/07/28 02:18

自分で立てたスレッドを放置しておかないで、レス・回答に対するフィードバックを書いて、クローズするところまでちゃんとやってください。忙しのかもしれないけど、そういう質問者さんの事情も上のレスから 1 週間も過ぎては通用しないと思うのですが。
faa

2021/07/28 02:35

申し訳ありませんが忙しくて放置しているのではなく、実施できない状況です。 teratailの利用は初めてのため分かっていないところなのですが、このような状況になった時はどのようにスレッドを管理するのが正解なのでしょうか?
退会済みユーザー

退会済みユーザー

2021/07/28 02:55 編集

Teratail に限らず、ここのような Q&A サイトではもらったレスに対してはタイムリーにフィードバックを返すというのがマナーだと思いますけど。「実施できない状況」というのが何だか分かりませんが、もしこの先フードバックを返せる目途すら立たないのなら、その旨書いて一旦クローズしてはいかがですか?
退会済みユーザー

退会済みユーザー

2021/07/28 02:58 編集

もし、私の回答のコメント欄で私が書いたように、簡単なサンプルを書けるのであれば、それをベースに話をするということも考えてはいかがでしょう? それも「実施できない状況」であればもうクローズしてもらった方が良いと思います。
faa

2021/07/28 04:05

一旦クローズにしました。 ご提案ありがとうございます。
guest

回答3

0

ベストアンサー

asp net core なら HttpContext.RequestAborted CancellationToken が 入っていますのでそれを使って判断してください。
非同期系API使っているのであれば大抵は引数に CancellationToken を求めると思われますのでキャンセルできると思います。

IIS なら判定できると思います。
インプロセスおよびアウトプロセス ホスティングの相違点

投稿2021/07/08 05:53

juner

総合スコア128

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

faa

2021/07/08 06:04

軽く調べましたが、おそらくasp net coreではないと思います。 浅学のため理解が難しいのですが、まずサーバーサイドの検索処理の中にそれを記述するという認識でよろしいでしょうか? 私の勉強不足で大変恐れ入りますが、もう少し詳しく書いていただければ大変助かります。
juner

2021/07/08 06:11

キャンセルを前提となる処理の場合、 `.net` では `CancellationToken` を使用して キャンセルされたかを判定するのですが、 その `CancellationToken` を提供するプロパティとして ASP .NET Core であれば `HttpContext.RequestAborted` があります(よく使います)。 ASP .NET だと `HttpResponse.ClientDisconnected` があるらしいですが、私は ASP .NET には詳しくないことになっているので検証はしていません。
juner

2021/07/08 06:15

DB処理であっても、非同期系API を確認してみれば大抵は **Async() みたいなメソッド名になっており、引数に `CancellationToken` をとるのでそのキャンセル判定に使う `CancellationToken` を渡してやればキャンセルしてエラーにすることができます。 .NET での キャンセルの仕方については次の記事が詳しいです。 https://docs.microsoft.com/ja-jp/dotnet/standard/parallel-programming/task-cancellation
faa

2021/07/08 06:21

ありがとうございます。 まだよく分からないところは多々あるものの、一旦参考URLと教えていただいた単語を基にした検索で少し奮闘してみます。
guest

0

ajaxを使ってDBに検索をかけて画面の一部を更新するweb画面を作成しています。処理実行中に画面を移動した時にはサーバー側で処理が続きますが、この処理を中止する方法はないでしょうか?

普通に考えて方法はないと思います。

「ajaxを使って」サーバーに要求した後、「DBに検索をかけて」なんちゃらは完全にサーバー側の話のはずで、ユーザーが「処理実行中に画面を移動した」なんて言うことはサーバー側で走る由もないので何ともならないはずです。

クライアント側で abort しても、サーバー側では「DBに検索をかけて」など処置が続き、応答も返ってきます。abort すればブラウザ側で応答が無視されるだけです。

web アプリは何か、そのフレームワークは何か書けば、そのあたりに詳しい人が、裏技、小技、表技とかを知っていて何か情報をくれるかもしれません。

投稿2021/07/08 05:43

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

faa

2021/07/08 05:52

webアプリは独自に作ったもので、フレームワークはASP.NETなので、ASP.NET総合1位のSurferOnWwwさんがご存じなければだめかもしれませんね・・・ 最初にこの回答を見た時に、もしかして出来るかもと思ったのですが、やはりApacheの仕様でこそ成り立つものしょうか。 https://okwave.jp/qa/q6917925.html
juner

2021/07/08 06:08

IIS で ASP.NET は詳しくないので知らないですが、 `HttpResponse.ClientDisconnected` 案件ですか?
退会済みユーザー

退会済みユーザー

2021/07/08 06:10

Apache は触ったこともないので分かりません。でも、普通に考えて、Web サーバーが DB サーバーのプロセスを中断させることができるというのも考えにくいですけど(私が考えにくいだけかもしれませんが)
退会済みユーザー

退会済みユーザー

2021/07/09 07:20 編集

簡単なサンプルでもいいので、問題を再現できるソースコードを提示することはできますか? 話をするベースが何もないのでは話が始まらないかと想います。 それから、.NET Framework or Core どっちかとそのバージョンも書いてください。
guest

0

SQLの管理画面で動作中のプロセスをkillしてやるのが間違いないかと

投稿2021/07/08 05:22

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

faa

2021/07/08 05:32

手段は問いませんと書いてしまいましたが、web画面上の動作がトリガーになる解決方法で教えていただきたいです。 誤解のある書き方をしてしまい申し訳ないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問