数分間待つと、ASP スクリプトがタイムアウトしましたと表示されますが、FTP はログインできます。データベース ディレクトリを確認すると、次のようなレコード ロック情報ファイルが見つかりました。データベースと同じ名前(私のデータベースはaccessデータベースです)(.ldbファイル)が常に存在していたので、ホストの管理パネルにログインしてWebサイトサービスを再起動しました。 ldb ファイルは消え、Web サイトは正常に開きましたが、数時間後、この状況が再び Web サイトに表示され、その後、Web サイトは仮想ホストプロバイダーによってブロックされました。私のウェブサイトは実行時に多くの CPU リソースを消費するため、ウェブサイトのプログラムまたはデータベースを最適化するために一時的にブロックされていると言われています。
Baidu でこの状況を検索したところ、多くの結果が見つかりました。要約すると、主にデータベースにアクセスした後、レコード セットが時間内に解放されず、データベース接続が切断されなかったことが原因です。標準的な操作方法について説明します。 Access データベース:
1. データベース接続方法: Conn.asp
<%
薄暗い
薄暗いコンセント
ディムデータベース
db=データベース/データ.mdb
conn = Server.CreateObject(ADODB.Connection) を設定します
connstr=Provider=Microsoft.Jet.OLEDB.4.0;データソース= & Server.MapPath(&db&)
conn.Open connstr
エラーの場合はその後
エラークリア
SetConn=なし
Response.Write サーバーはメンテナンス中です。後でもう一度お試しください。
応答.終了
終了の場合
SubCloseConn()
'以下はデータベースを切断する文です
接続閉じる
conn=何も設定しない
エンドサブ
%>
2. リリースレコードセットを閉じる
rs.close
rs=何も設定しない
3. データベース接続を切断します。
接続閉じる
conn=何も設定しない
上記 3 つの内容を組み合わせると、次の Access データベース操作の標準メソッド Test.asp が得られます。
<!--#include file=conn.asp -->
<%
sql=select * from table order by id
set rs=server.createobject(adodb.recordset)
rs.open SQL,conn,1,1
そうでない場合は、
電話=rs(電話)
ファックス=rs(ファックス)
終了する場合
'以下はレコードセットステートメントを閉じて解放します
rs.close
rs=何も設定しない
' サブ関数を呼び出してデータベースを切断します
CloseConn() を呼び出す
%>
この基準に基づいて、Web サイトのプログラムを徹底的にチェックおよび修正した結果、最終的に Web サイトに正常にアクセスできるようになり、以前のデータベースのデッドロックの状況は発生しなくなりました。