トップページ⇒php
1001コメント403KB

==ASP== Part 3

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/07/28 23:07ID:33/XGu54
ASP について語るスレ その3

【過去スレ】
==ASP== Part 2
http://pc2.2ch.net/php/kako/1028/10280/1028024916.html
==ASP==
http://pc.2ch.net/php/kako/984/984840107.html
072071704/11/30 20:31:15ID:tivpUcTG
>>719
レスありがとうございます。
いろいろ調べて見ました。
BASP21のbhelper.exe? basp21p.iniの設定?・・・

basp21p.iniに**.asp(メール送信)のパスを書いて
そのaspファイルを実行するためのbatファイルを
タスクスケジュールで動かすということでしょうか?

さらに調べて見ます・・・
072171904/11/30 20:47:48ID:???
>>720
VBScriptファイル(例:dbcheck.vbs)にDBのチェックルーチンを書いてBASP21のSendMailを使ってメールを送る。
タスクスケジュールからそのVBScriptファイルを起動するように設定するだけ。batは別にいらない。

ほかにもいろいろやり方ある。がんがれ。
0722nobodyさん04/11/30 20:51:52ID:???
>717
SQL Server Agent に監視してもらうのがいいんでない?
072371704/12/01 19:20:01ID:mG+eCHVU
719さん、アドバイスありがとうございます。
下記のようなものをタスクで動かすといったことでしょうか?
m_from = "******@***.co.jp"
m_title = "アラーム"
m_to = "*****@***.co.jp"
m_sv = "***.**.**.***"

Set Conn = Server.Createobject("ADODB.Connection")
Conn.Open "usr1","usr1","user2"

SQL = "select * from alarm"
Set db = Server.Createobject("ADODB.Recordset")
db.Open SQL,Conn,3,3

gen = trim(db("AAA"))
zan = trim(db("BBB"))
shamei = trim(db("CCC"))

if gen < zan then

Do while NOT db.eof

m_name = "社名:" & shamei

db.MoveNext
Loop

Set Objbasp = Server.Createobject("basp21")
rc = Objbasp.Sendmail(m_sv,m_to,m_from,m_title,m_name,"")

end if
Conn.Close
072471904/12/02 12:34:08ID:???
>>723
そんな感じのスクリプトを1時間おきとかに走らすようにスケジュールすればいいと思ふ。
0725nobodyさん04/12/04 18:06:40ID:OgiZkJNR
USER_AGENTを使って、各キャリア毎に別ページにRedirectかけてるのですが、
auの古い機種(A1304T)だとRedirectがききません。
ジャンプ先のURLを直打ちしてやると問題無く表示されます。
最近の機種だと、期待通りの動作をします。

何か良い解決策はありませんでしょうか?

最悪、auだと判明した時点で、「auの方はこちら」と
HTMLでリンクを表示させようと思ってますが、ちょっとそれはカッコ悪いので…。
0726nobodyさん04/12/04 18:25:30ID:???
>725
リダイレクトでなくServer.Transferしてしまうのはどうか。
0727nobodyさん04/12/04 22:40:11ID:???
>>725
リダイレクト時のURLを相対指定じゃなく絶対指定にしても駄目?
0728nobodyさん04/12/05 01:30:19ID:0MhJ+aQV
>>715

昔DBマガジンか何かで読んだけど

ADODB.Command + Parameterオブジェクト
↓
sql文を ADODB.Connection で実行
↓
Recordsetでfieldを入力し、 Update

らしい。
072972804/12/05 01:31:29ID:???
書き忘れてたけど、性能ね。
Commandオブジェクトが一番速いらしい
0730nobodyさん04/12/05 02:18:05ID:???
>729
ストアドプロシージャを使えるならそれが最速だわな。
RecordSet でUpdateは、バッチ更新モードにしたら結構速そうな気がするけどどうなんだろう?
0731こうたろう04/12/08 02:00:58ID:+LYJFTt5
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
</HEAD>
<BODY>
<P>フォームとPHPの連携</P>
<FORM method="POST" action="smp4-01.php">
キーワード <INPUT size="20" type="text" name="keyword">
<BR>
<BR>
<INPUT type="submit" name="exec" value="実行">
<INPUT type="submit" name="cancel" value="キャンセル">
</FORM>
</BODY>
</HTML>
にアクセスしてPHPと文字を入力してsmp4-01.php↓
<?php
print $keyword . "<BR>";
print $exec . "<BR>";
?>
に飛ぶんですけど
Notice: Undefined variable: keyword in C:\Program Files\Apache Group\Apache2\htdocs\smp4-01.php on line 3

Notice: Undefined variable: exec in C:\Program Files\Apache Group\Apache2\htdocs\smp4-01.php on line 4
どうしても↑になるのは何がいけないんでしょうか?宜しくお願いします。
0732nobodyさん04/12/08 02:44:48ID:???
>>731 お前の頭か教科書が古い
0733nobodyさん04/12/08 10:52:16ID:???
そもそもここは(ry
073471504/12/09 11:48:01ID:???
>>728
メモしますた。
全然関係ないと思うけど、レコード件数を数えるのに
ADODBのRecordCountとSQLのCount(*)で時間を比べたらSQLのが確実に早かったです。
0735nobodyさん04/12/09 18:26:25ID:???
>734
Count(主キー列名)にするともっと速いらしいぞ。
0736ASP素人04/12/10 11:17:31ID:Z21oO7ei
データベース使って
ユーザーごとにページ振り分けをASPでしたいんですが、
どのページ参考にすればいいですか?
0737nobodyさん04/12/10 15:35:46ID:eati1ZOZ
質問させて下さい。
JScriptでcookieの有効期限を1時間後に設定したいのですが、上手く動きません。
ソースはこんな感じです。

var d,ti,kigen,d2;
d = new Date();
ti = d.getTime();
kigen = parseInt((ti + 600000),10);
d2 = new Date(kigen);

//クッキーの作成
Response.Cookies('kukki').Expires = d2;

//クッキーの受信
Response.Write(Request.Cookies('kukki'));
Response.End();

クッキーの作成の部分で「型が一致しません」と表示されエラーになってしまいます。
宜しくお願いします。
0738nobodyさん04/12/10 15:51:37ID:???
>>737
http://www5a.biglobe.ne.jp/~n_rieko/asp/9.htm
http://www.ken3.org/cgi-bin/test/test066-2.asp
http://labo.heisei-tech.co.jp/Www/Asp/8.htm
0739nobodyさん04/12/10 18:01:17ID:eati1ZOZ
>738さん
ありがとうございます。
ただ、分単位での期限設定が出来ません。
60分後にクッキー削除したくて、以下の様に記述するとエラーになります。

Response.Cookies("cookie1") = "kuki"
Response.Cookies("cookie1").Expires = 60

2行目の部分を
Response.Cookies("cookie1").Expires = Date+1
というような、1日単位での設定はできてるみたいなのですが。

Cドライブのcookiesフォルダの中に、クッキーが作成されないのも気になります。

あと、できればJScriptでの記述が載っているページも教えて頂けませんか?
VBは慣れてないのでムズカシイです…。
0740nobodyさん04/12/10 19:06:42ID:???
どうして直接60とか設定しようとするんだ?
現在の日付時刻に60分足したらいいだけじゃないのか?
0741nobodyさん04/12/11 12:55:51ID:nhn6UiYD
>740さん
そう思ってJSで、737の様な記述にしたんですが、上手く動かず。
VBでは739の次に
Response.Cookies("cookie1").Expires = Date + Minute(60)
という記述も試してみたのですが、ダメでした…。
VBでもいいので、現在時刻に60分を追加する方法を教えてもらえませんか?
0742nobodyさん04/12/11 13:34:11ID:???
>>740
聞くだけではなく自分で調べる癖をつけましょう。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/vsfctDateAdd.asp
074374204/12/11 13:36:05ID:???
間違った...>>740じゃ無くて>>741な
0744nobodyさん04/12/16 11:41:35ID:???
教えてください。

ASPでExcelを生成・操作するとき
IISが実行されているサーバに
MS-Officeがインストールされている
必要はあるのでしょうか?

0745nobodyさん04/12/16 12:54:00ID:???
ないよ。Excelで保存できるって言ってもHTMLの拡張子をxlsにしたようなもんだから
あまり関係ない。
0746nobodyさん04/12/16 23:26:53ID:???
え?Excelが入ってないとだめだろ。
0747nobodyさん04/12/17 01:04:32ID:???
Server.CreateObject("Excel.Application")てしたいんだったら
多分鯖にExcel入ってないとダメでそ。
0748nobodyさん04/12/17 01:15:37ID:???
>>746
[HOWTO] 書式付きの Excel ブックを作成して MIME コンテンツとしてストリーム配信する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;271572
0749nobodyさん04/12/17 01:51:02ID:I091fOI9
ここ数日以下のことで悩んでます、。

Webサーバ:Win2k IIS5 + ASP(VBScript) (Shift-JISでコーディング)
DBサーバ:Fedora core + PostgreSQL7.4 (UTF-8でTable作成)

環境でASPの勉強をしているのですが、
ADOでデータを取得した場合 文字化けが発生しました。
(DBサーバをEUCにしたら文字化けはしません。)

UTF-8 のデータを扱いたい場合、注意する点等あれば教えてください、、。
075074904/12/17 01:52:28ID:???
UTF-8 で table 作成っておかしいですね、、
create -E UTF-8 データベース名
でDBを作成しました。。
075174504/12/17 10:54:15ID:???
Response.ContentType = "application/vnd.ms-excel"
これ使ってExcel保存する場合は鯖にExcelなくても大丈夫
中途半端な説明でごめん。
ただこれで保存してもソース見るとただのHTMLでXLMじゃないから
注意してねん
0752nobodyさん04/12/17 14:53:02ID:???
>>749
正直PostgreSQLスレで聞くべきだと思うのだけど…

ざっと思いついた確認事項
1.コンソールから psql -l でデータベースのエンコーディングを確認する
2.psqlで select * from <該当テーブル名> で文字化けして取り込まれていないかチェック
3.クライアントエンコーディングの設定

特に3番目は要チェック
0753nobodyさん04/12/17 21:10:18ID:???
>>751
> ASPでExcelを生成・操作
0754nobodyさん04/12/22 19:38:54ID:???
学校の課題でCSVファイル内を検索するASPのプログラムを作ってるんですが
処理が非常に重いためブラウザへの出力処理がかなり遅れます
重い検索処理をしている間は「検索中」と表示したいのですが
どうやればいいでしょうか(´・ω・`)
0755nobodyさん04/12/23 00:45:05ID:???
>>754
一番簡単な方法が、
「検索中」と書いたプレーンHTMLからMETAタグでASPに飛ばす。
ファイルが2つになるのが嫌ならQueryString使えばいい

test.asp にアクセス
↓
<META>タグですぐに test.asp?search にリダイレクト
↓
サーバ内で計算している間はページ遷移が起きないため test.asp に書かれている「検索中」が表示されたまま
↓
サーバ内で計算が終わると、ブラウザに test.asp?search の内容が送られる

ちなみにASPのバッファのフラッシュとかすればできるみたいだけど、漏れはできた試しがない
0756nobodyさん04/12/23 00:51:06ID:???
こんな感じかな

<%
  if (Request.QueryString().Item()!="search") {
%>
<html lang="ja">
<head><meta http-equiv="Refresh" content="0;URL=test.asp?search"></head>
<body>検索中...</body>
</html>
<%
  } else {
%>
<html lang="ja">
<head>
....
0757nobodyさん04/12/23 02:22:41ID:???
デキタ━━━━(゚∀゚)━━━━!!

ありがとうございます、
丁寧に例まで書いてくれて本当に・゚・(ノД`)・゚・。
0758nobodyさん04/12/24 16:19:31ID:???
フォームから任意に単語を入力してもらって検索するプログラムを書いてるんだけど、
もしその中に「SELECT」とか「"」とか入力されたらエラーになりますよね。

例)「名無し」と入力すると
SELECT * FROM Test WHERE Name = '名無し'

これがもし「SELECT」「'」だったらエラーが返ってきます。

そういったSQL文に含めちゃいけない文字や単語一覧が載ってるサイトとかありますか?
例文とかあると助かるのですが。
0759nobodyさん04/12/24 19:36:58ID:???
>>758
それは板違い。データベース板へGO!


一つだけ言っとくと「SQL文に含めちゃいけない文字」なんて無い。
要はデータベースにとって特別な意味を持つ文字(デリミッターに使う文字とかワイルドカードとか)
を含む場合は、それに応じた処理をすればいいだけの話。
0760nobodyさん04/12/24 23:06:24ID:???
>>758
ADODB.Command
076175804/12/25 11:58:10ID:???
DB板へいってきます(*´д`)
0762nobodyさん05/01/05 11:17:30ID:???
予約語なら

データベースのヘルプファイルのキーワードのところに予約語と入力すれば一覧表が表示されるが。
0763nobodyさん05/01/11 22:42:19ID:???
過去ログ読んでて
ASPでAccess使うやつは糞って言われてるのは何故ですか?
検索しても分かりませんでした(´・ω・`)
0764nobodyさん05/01/11 23:46:50ID:???
>>763
Accessは基本的にスタンドアロンでの使用を想定したデータベースだから
0765nobodyさん05/01/12 08:28:06ID:???
>>763
みんなmdbは糞だいって無理にMSDE使いたがるけど、
MSDEでWebDBやってるデータベースのほとんどはmdbでも十分。

mdbなんてコピーするだけで別のサーバにデータ移せるし、インストールもいらないしね。

ADOで接続するなら接続プロバイダーが違うだけだから、mdbでやって不都合があるなら
MSDEや他のDBにアップサイジングするのをおすすめします。
076676305/01/12 23:32:10ID:???
>>764,765
レスサンクス!
なるほど、それじゃ特別に欠点があるわけじゃないんですね、、
今学校の課題でASP+mdbでプログラムを作ってるんですが
プログラムのサイズが大きくなってくるに伴い、

Provider (0x80004005)
エラーを特定できません

というエラーを出すようになってしまったんです。
エラーの出るタイミングはランダムでまったく出ないときもあります
一度でると数秒待って実行しないと連続で出ます
エラーは
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open sp
で発生してるみたいです
開発&実行環境は
Win XP Pro,
IIS 5.1
一応学校の教師にも聞いてみたんですがタスクが壊れてるんじゃないかな
と言う答えだけで解決はできませんでした
もしタスクが壊れているとしたら解決法はないでしょうか、
もし違う原因が考えられたらそれも教えて欲しいです
よろしくお願いします。
0767nobodyさん05/01/13 00:34:44ID:???
×:タスク
○:スタック
(;´Д`)
0768水瓶05/01/13 01:20:49ID:b40uSWu1
はじめまして、ASP初心者のです。
まず、現状をご報告致します!

サーバー環境
Windows2000 Server
IIS5.0
basp21

クライアントのブラウザからJPEGファイルのアップロード
をさせたいのですが・・・サイズが大きいファイルをアップ
ロードされてしまいます。サーバー側でアップロードファイル
のサイズ指定をしたい所ですが、クライアントの中には面倒臭い
と言う方が多く・・説明時間が非常にもったいないので。
サーバー側でアップロードされた画像ファイルのサイズ変更を
行なうにはどうしたらよろしでしょうか?

※ちなみにレンタルサーバーを借りているので、コマンドを使用
して画像を一括縮小するようなexeは起動できません。

みなさまどうかお力をお貸し下さい、宜しくお願い致します。
0769nobodyさん05/01/13 01:41:17ID:???
>>768
ISAPIが利用できるのであれば...
0770nobodyさん05/01/13 01:53:11ID:???
>>766
毎回0x80004005エラーが出るならIIS実行ユーザーのアクセス権とかが怪しいんだけど
>エラーの出るタイミングはランダムでまったく出ないときもあります
だからなあ。
ttp://tryasp.winscom.co.jp/wbbs_qa.asp?TBL=W4_ASP_QA&CATE=&MODE=L_PARENT&NO=0&CTL_DISP=GROUP&CTL_NO=60322
の一番下のレスを参考にしては?
0771水瓶05/01/13 10:01:02ID:b40uSWu1
返答ありがとうございます!
早速ですが・・ISAPIで使用できる
画像サイズ縮小の簡単なサンプルコード
があったら教えて下さい。
宜しくお願い致します!
0772nobodyさん05/01/13 18:05:07ID:???
>>770
クローズ処理が抜けている箇所がありました、
まさかこれがこんなエラーになるなんて、、
修正後は1度もあのエラーが発生してないので
原因はこれの可能性大です
ありがとうございましたm( " )m
0773nobodyさん05/01/15 00:12:37ID:T9jb4et6
こんちは。
家には、XP Home Edition が二台あります。これらを使用してASPがうごかせないですか?
あるサイトでASPを動かすにはIIP(だったかな)が必要で通常の httpd142n なんかでは
うごかないそうです。
そこで、XP Home Editionが二台あったことを思い出し、一台はウェブサーバーにしてもう一台
は通常のクライアントPCにすることによってASPが動かせないかな? と思っていますが、
いかがでしょうか?
もし可能だったらHome Edition同士のネットワークの組み方も教えてください。
0774nobodyさん05/01/15 00:53:46ID:???
>>773
バージョンを含めたアーカイブファイル名でhttpd142nなんていうな。
それは「AN HTTPD」というWebサーバ。
さらに、IIPじゃなくてIIS。
ASPを動かすためにはIISかPWSが必要だが、XP HOMEには
どちらも付属していないしサポートされていない。
動かすのが不可能ではないが初心者には無理。
素直にXP PROを買え。
それ以前になぜASPなのかが疑問だけどな。
ネットワークの組みかたは板違いなので初級ネット板で。
0775nobodyさん05/01/15 02:16:39ID:???
>>768
>>769じゃないんで>>769がどういうISAPIを想定しているのかわからんのだが
ttp://aspin.com/home/components/
もしかしたら、このページにお望みの物があるかもしれない。
目的のISAPIが見つかればサンプルコードはドキュメントに大抵記載されているはず。
0776nobodyさん05/01/15 03:03:00ID:???
>>773 ASPじゃなくてPHPとかやれば?
0777nobodyさん05/01/16 00:03:11ID:???
>773
意味があるかどうかは激しく疑問だが
Apache::ASPっつーものもこの世にはないではない。
0778水瓶05/01/16 22:45:09ID:zwbLgbaT
775の方、ありがとうございます!
さっそくサイトの方を拝見しました。
Englishサイトだったので・・ちょっと探すのに
時間がかかりましたが、Imager Resizerと言う物
をGetできました、これから、英文と格闘して何とか
したいと思います、本当にありがとうございます。
感謝、感謝しております。
0779nobodyさん05/01/17 12:33:59ID:???
>>773
今ならまだステップアップグレード版が買える。
0780nobodyさん05/01/19 13:28:55ID:bcQ8immq
質問させて下さい。
form(POST)受けた情報が正しければ、
その情報をtxtに書き込み、
5秒間「ローディング中」のgif画像を表示した後、画面を切り替え、
入力された情報が確認用に、画面表示される。
というスクリプトが書きたくて、行き詰ってます。
入力情報をtxtに書き込み、確認表示させる事は出来たのですが、
間にローディング中を挟むと、期待通りの動作をしません。
どなたか解決方法教えて下さい。

ソースはこんな感じ↓です。

Sub KAKIKOMI()
入力された情報をtxtに書き込み
Call LOADING()'ロード中サブルーチンの呼び出し
End Sub

Sub LOADING()
Response.Write("<img src='loading.gif'>")'ロード中の画像
Dim TimerStart, TimerEnd, TimerNow, TimerWait
TimerWait = 5
TimerNow = Timer
TimerStart = TimerNow
TimerEnd = TimerStart + TimerWait
Do While (TimerNow < TimerEnd)
TimerNow = Timer
If (TimerNow < TimerStart) Then
TimerNow = TimerNow + 86400
End If
Loop
Call HYOUJI()'確認画面を表示するサブルーチンの呼び出し
End Sub
0781nobodyさん05/01/19 15:58:16ID:???
>>780
>>754-756辺り参考にならないか?
0782nobodyさん05/01/19 16:47:34ID:SN13QhSb
今時ASPかよ!
時代はPHPだろ?
0783nobodyさん05/01/19 16:54:13ID:???
yahooジオシティでHPを作ってるんですけど
mdbとaspを使用してサーバー上でデータベースの検索、更新等を行いたいのですが
できるのでしょうか?
yahooジオシティではmdb,asp,js等のファイルが使用可能になってますが
やり方が分からないです。いろいろ探したんですけどそれっぽいのがありません。
0784nobodyさん05/01/19 17:26:49ID:???
>>783
>yahooジオシティではmdb,asp,js等のファイルが使用可能になってますが
アップロードできるファイルの拡張子と利用できることは別。
それとも有料版とかは利用できるのか?
0785nobodyさん05/01/19 17:34:45ID:JyTQskK2
>>784
なるほど。確かに転送可能としかなってませんな。
有料版はよくわかりません。

となると他のレンタルサーバーでやるしかないか。
0786nobodyさん05/01/19 21:20:03ID:???
>>780
ASPでやりたければ>>754-756の通り。
JavaScript+DOMでやるって手もある
0787nobodyさん05/01/22 17:02:52ID:cI+rNlDv
VBScriptでカレントディレクトリのパスを取りたいのですが、
wwwrootにあるaspファイルでFileSystemObject.GetFolder(".")のようにすると
C:\Inetpub\wwwrootではなくC:\WINDOWS\System32が返ってきます。
カレントのパスを取ることはできないのでしょうか。
0788nobodyさん05/01/22 17:13:29ID:???
>>787
Request.ServerVariables("APPL_PHYSICAL_PATH")
078978705/01/22 17:27:33ID:cI+rNlDv
>>788
レスありがとうございます!!
しかしこれだとカレントではなくサーバーのルートになってしまうみたいです。。。
0790nobodyさん05/01/22 17:44:37ID:???
>>787
Server.Mappath()

* やりたいことを勘違いしてたらごめん
0791nobodyさん05/01/22 18:59:00ID:HKaXY9jS
ASP にてファイルロックをしたいです。
読み取りロック、書き込みロックができるといいですが、どんな方法があるでしょうか?
079278705/01/22 19:16:21ID:cI+rNlDv
>>790
おお!まさにこれです!Server.Mappath(".")でカレントが取れました!
ありがとうございました!!(・∀・)
0793nobodyさん05/01/22 21:46:11ID:???
>>791
Application変数
0794nobodyさん05/01/22 22:42:00ID:???
Application.Lock
079579105/01/22 23:10:46ID:???
>>793,794
ありがとうございます。
ただ、Application.Lock みたいな、サーバ全域に及ぶ大雑把なロックではなくて、ファイル単位にロックを
掛けたいのです。
というのは、たとえば複数板を持つ掲示板のように、ロック対象のファイルが独立に何個もあるからです。
つまり、ログAに対するアクセスとログBに対するアクセスは排他する必要がないですよね。

もちろん、具合のいい手段が無ければ Application.Lock を採用せざるを得ないと思っています。
0796nobodyさん05/01/23 00:11:09ID:???
>>795
複数Lock用の変数があったって何も問題ないと思うぞ。
それにApplication変数はサーバ単位じゃなくてアプリケーション単位だし。

Windowsはflockができないから
Application.Lockが嫌ならロックファイル作ってfsoのFileExistsくらいしかないと思うぞ
079779105/01/23 00:41:16ID:???
>>796
>複数Lock用の変数があったって何も問題ないと思うぞ。

Lock用の変数というのがいまいちよくわからないのですが、どういうことなんでしょうか?
ロックしたいファイル毎に変数を用意して、その変数ごとにロックをかけることができるということでしょうか?

>それにApplication変数はサーバ単位じゃなくてアプリケーション単位だし。

Application はアプリケーション単位とのことですが、test1.asp、test2.asp を作って、それぞれのスクリプトで
Application("MyValue") に対して値を格納、取得してみると、Application は test1.asp、test2.asp で共通の
オブジェクトであることが確認できます。
ですので、同一サーバ内の ASP 共通のオブジェクトだと思っていたのですが、認識が違ったでしょうか?

というか、そもそも根本的な質問となってしまい恐縮ですが、IIS で言うところの「アプリケーション」って
なんですか?
自分のマシンにとりあえず IIS を入れて遊んでいるのですが、インストールしっぱなしで何も考えずに
wwwroot の下にスクリプトを作って実験しています。
ですが、アプリケーションというのがどういう単位のものなのか、よく分かってないです・・・

>Application.Lockが嫌ならロックファイル作ってfsoのFileExistsくらいしかないと思うぞ

これについても検討しました。
ようするに、自前のループを構成し、ロックファイルをチェックしながらロックが解除されるまでループするわけですよね。
この処理に欠かせないものとして、他言語で言うところの Sleep が必要だと思うのですが、ASP での Sleep って
なんでしょうか?
0798nobodyさん05/01/23 02:37:09ID:???
>>797
>>797
> Application はアプリケーション単位とのことですが、test1.asp、test2.asp を作って、それぞれのスクリプトで
> Application("MyValue") に対して値を格納、取得してみると、Application は test1.asp、test2.asp で共通の
> オブジェクトであることが確認できます

Application("test1.asp"), Application("test2.asp") って2つ作ればいいのでは?

> ようするに、自前のループを構成し、ロックファイルをチェックしながらロックが解除されるまでループするわけですよね。
> この処理に欠かせないものとして、他言語で言うところの Sleep が必要だと思うのですが、ASP での Sleep って
> なんでしょうか

Application変数使う場合も同じだよ。
変数の方がファイル作るより速いし、値の更新ロックもかけられて安全だからね。
SleepはBASP21でやればいいし。
ただ、Application.Lock/UnLockはすべてのApplication変数をロックするから、長い間ロックしないように。

まぁ、そもそもadoとかfso使って書き込む場合はプロセスがファイルをロックするから
ロック制御なんていらないっていう話もあるけど。
0799nobodyさん05/01/23 02:46:55ID:???
>>797
> IIS で言うところの「アプリケーション」ってなんですか?

簡単に言えばApplication変数やglobal.asaのスコープ範囲のこと。
設定したフォルダ以下のIIS設定パラメータが他と独立になる。
global.asaや同じ名前のApplication変数はアプリケーション内に一個しか持てないから
それぞれ別の設定にしたければ独立でアプリケーションを立てればいい。
IIS6.0ならスレッドやメモリも独立になるから、プログラムのバグで応答しない状態になっても
サイト内の他のプログラムは影響を受けない。
080079905/01/23 02:50:54ID:???
間違った。
> IIS6.0ならスレッドやメモリも独立になるから、プログラムのバグで応答しない状態になっても
> サイト内の他のプログラムは影響を受けない。
これはアプリケーションじゃなくてプールだ。
0801791=79705/01/23 03:35:33ID:???
毎度回答ありがとうございます。

>>798
>Application("test1.asp"), Application("test2.asp") って2つ作ればいいのでは?

すみません、こうやって 2つ作る目的がわかりません。
やりたいことは >>795 で補足したように、複数のファイルを個別にロックする、ということです。
たとえば掲示板スクリプト bbs.asp を作ったとして、引数に応じて扱う板を変えるとします。
bbs.asp?bbsid=1 とか、bbs.asp?bbsid=2 という具合にです。
bbs.asp は、bbdid=1 ならば 1.log、bbsid=2 ならば 2.log と、それぞれのログファイルに対してアクセスするわけです。
この際に、bbsid ごとに排他制御を行いたいのです。
Application.Lock で済ませると、本来ならば 1.log と 2.log は同時にアクセスしてもかまわないにも関わらず、排他アクセスしかできなくなってしまいます。

ところで
>そもそもadoとかfso使って書き込む場合はプロセスがファイルをロックするから
これって本当なんですか?
ado についてはこの際どうでもいいとして、fso は自動的にロックするものなのでしょうか?
ロックされてるファイルに対してオープンをかけるとどうなりますか?
エラーになるのは都合が悪くて、ブロックされるのがCPUリソースの有効活用の点で具合がいいです。

あと、後出しの条件ですみませんが、basp21 は都合により今回は使いたくないです。
すると Sleep に相当する機能は無いということになりますか?

>>799,800
おかげさまで google でようやく具合のいい説明に流れ着いたこともあって、その説明でよく理解できました。ありがとうございます。


いろいろ回答していただいて思ったのですが、自分のやりたいことをするには、ASP だけでは無理で、それ用のコンポーネントを作るってアプローチになるのかな、と感じました。
ただ、どこでも何もせず、できるだけスクリプトを置くだけで動くようにしたいので、Application.Lock を使うのが唯一の選択肢になりそうですね。
(>>798 によれば、そもそもロックする必要は無い?)
0802nobodyさん05/01/23 12:42:25ID:qaGxTvCi
>>801
そんなに頻繁にアクセスされるならMDBにログ吐いた方がいいんじゃないの?
0803nobodyさん05/01/23 13:28:55ID:???
>>801
http://tryasp.winscom.co.jp/wbbs_qa.asp?TBL=W4_ASP_QA&CATE=&MODE=L_PARENT&NO=0&CTL_DISP=GROUP&CTL_NO=33018
0804791=80105/01/23 14:27:40ID:???
>>802
今回はファイルの使い方のお勉強が目的だったので、MDBはまた今度にします。
自分でも調べてみてるのですが、ASP ではあんまりきめ細やかなファイルの制御はできないって結論で合ってますよね。
ところで、MDB は複数の同時アクセス時に壊れるという話がありますが、どうなんでしょう?
以前 ASP ではないんですが、VB にて MDB の実験を行ったとき、テーブルがロックされるタイミングがなんかおかしくて、
データの整合性が取れないことがある、という現象を確認しています。
このときは、ファイル共有した MDB に複数のマシンからの同時アクセスする実験だったのですが。
それ以来、多数クライアントの用途においては MDB を毛嫌いしています。

>>803
ありがとうございます。
これを読んで、今採用できる手段は Application.Lock しかないのだろう、と悟りました。
これによるパフォーマンスの問題が気になるほど深刻なわけではなかったのですが、エレガンスの点から他の方法を探していました。
ですので、無いなら無いで、そういう結論が出せたというだけで十分な収穫でした。
しかし、>>801 のリンク先にはなにやら気になる記述がありますね。

>IISはファイルを一定時間ロックしますので、この間はファイルの削除が失敗します。(ファイルのクローズ後、確か60秒間だったような?)

これについての詳細な挙動について書かれたドキュメントってありますか?
0805nobodyさん05/01/23 15:47:22ID:???
>>804
> MDB は複数の同時アクセス時に壊れるという話がありますが

確かにMDBは壊れるとかよく聞くけど
ADO使ってきちんと行ロックかけて更新してれば壊れることはない。
IIS以外からもAccessとか使って作業してたり、DAOとか使ってたら話は別だが。

さすがに秒間何百アクセスもあるくらいのサイトならDB使うだろうしね。
0806nobodyさん05/01/23 17:47:13ID:???
>>805
確かにIIS+ADOからしかアクセスしないんだったら、
同時アクセスが起きないんだから壊れるわけがないわな。
0807nobodyさん05/01/29 09:30:56ID:???
>>806
俺もそんな風に思ってたんだけど、ぐぐってたらこんなの見つけた。
ttp://blog.melma.com/00034126/20041205171020

要は3000hit/日くらいのサイトのアクセスログをmdbに保存するスクリプトで、

>3日にいっぺん、mdbファイルが破損してました。

ってことなんだけど、どうなんだろう?
他にこういう経験した人いる?

試しに、連続して1000件ずつINSERTするスクリプト(ASP)を書いて
Win2k+IISに置いて、5台のPCから同時にそれを開いてみたんだけど、
mdbが壊れた様子はなかった。
検証としては不十分かもしれないけど、3000hit×3日での
「同時アクセス」の発生回数よりは遙かに多い筈だが…。
0808nobodyさん05/02/01 23:19:53ID:c6w5Mcw9
javascriptの中にASPの変数を入れたい場合はどうすればいいんでしょうか?
0809nobodyさん05/02/01 23:49:21ID:ahD93X8b
>>808
hiddenで渡せば?
0810nobodyさん05/02/02 01:13:34ID:???
>808
変数=<%=変数 %>;
0811nobodyさん05/02/03 21:16:15ID:???
>>810
変数="<%=変数 %>"; だろ。俺も良く間違えるけど。
081281005/02/04 00:28:38ID:???
いや、数値型なので合ってる。
0813nobodyさん05/02/05 07:04:27ID:???
16歳でASPのアルバイトしてますが
時給1300円
0814nobodyさん05/02/05 10:38:40ID:???
>>811
それ言うなら、適切なエスケープ処理も入れないと。
0815nobodyさん05/02/17 16:35:06ID:???
>>813は何が言いたいんだろう…
0816nobodyさん05/02/17 22:38:35ID:???
>>815
1300円って安すぎだろ。
高校生のバイトにしては高いのかもしれないけど。
0817nobodyさん05/02/20 03:46:34ID:QVbhiX9s
aspを使ってWeb上で
毎日数値を打っていって、そのデータ(mdbに保存)を
折れ線グラフで表示させたいんですけど
できますでしょうか?
0818nobodyさん05/02/20 05:15:28ID:???
Office Web Component とか使えば可。
0819nobodyさん05/02/20 08:50:02ID:???
>>817
http://www.chestysoft.com/drawgraph/default.asp
おれ、これ買って使ってる。 30ドル。
日本語も問題なく出せるし、コーディングが簡単だったから。
円グラフと棒グラフも簡単に出せる。
http://www.chestysoft.co.uk/drawgraph/linegraphs.asp
082081905/02/20 09:01:29ID:???
ごめん、いまは50ドルみたい。
http://www.chestysoft.co.uk/drawgraph/databasedemo.asp
ここにトライアル版と、DBからの出力例のスクリプトがある。
凡例には日本語フォントを指定すれば日本語が出る。
■ このスレッドは過去ログ倉庫に格納されています