【 スクリプト改造工房 PART 5 】
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
02/08/01 18:19ID:???#================================
# スレッドの説明
#================================
「スクリプトを改造したいけどやりかたわかんないよー」という人がいましたら
ここで聞いてください。ひょっとしたらアドバイス出来るかもしれません。
質問するときは以下の点に注意して書いて下さい
(1) そのスクリプトの内容と置いてある場所を明記する (txtファイルでUPすればなお良い)
(2) どんな風に改造して欲しいのか? (完成イメージHTMLを用意すればなお良し)
(3) 出来るだけ詳しく書くこと。少しは自分で考えること。できれば御礼も言ったほうが良い
※答えてくれないからといって逆ギレする厨はお断り
#================================
# 過去のスレッド
#================================
【PART1】行方不明
【PART2】http://pc.2ch.net/test/read.cgi/perl/986986227/
【PART3】http://pc.2ch.net/php/kako/988/988808396.html (HTML化済み)
0955nobodyさん
03/03/11 18:32ID:???既に解決しているだろうと思うけれど、念のためにカキコすると
flock関数はopen関数で指定されたファイルハンドルで使用するため
指定のルーチンをそのまま置き換えるには無理があるYO
実際はもっと簡単にできる
flock関数を使用している他のソースを調べましょう
0956872
03/03/11 18:47ID:k4GIfrjV$lockkey = '3';
#&lock内に追加
if ($lockkey == 3) {
for ($i; $i<=5; $i++) {
if (flock (FH, 2)) {
last;
} elsif ($i == 5){ &error('LOCK is BUSY'); }
sleep(1);
}
}
#同じく
sub unlock {
if ($lockkey == 1) { unlink($lockfile); }
elsif ($lockkey == 2) { rmdir($lockfile); }
elsif ($lockkey == 3) { flock(FH, 8);}
$lockflag=0;
}
0957872
03/03/11 19:18ID:k4GIfrjVすいませんでした。。
0958nobodyさん
03/03/11 20:23ID:???ん? なんで謝るのYO
ファイルハンドルとサブルーチンを呼び出す位置を間違っていなければ
sleepする必要はない気がするけれど・・・構わないんじゃないの
0959949
03/03/11 20:41ID:???>>956さん
試してみたんですが、LOCK is BUSYばかり出て書き込めませんでした。
>>955さん
とりあえず以下のように記述してみました。
open(IN,"$logfile") || &error("ログファイルが開けません");
flock( IN, 1 ); #ファイルを読み出しロック
@lines = <IN>;
flock( IN, 8 ); #ロック解除
close(IN);
open(OUT,">$logfile") || &error("ログファイルに書きこめません");
flock( OUT, 2 ); #ファイルを書き込みロック
print OUT @lines;
flock( OUT, 8 ); #ロック解除
close(OUT);
これで書き込めたんですが、あっているでしょうか? ファイルロックができているかチェックする方法とかありませんか?
0960nobodyさん
03/03/11 20:54ID:???flock( OUT, 8 ); #ロック解除
はいらない
0961nobodyさん
03/03/11 21:06ID:?????
0962nobodyさん
03/03/11 21:57ID:???あってるYO
ファイルロックのテストは、適当にfork関数で多数の子プロセス上で排他処理させるか
指定時刻にファイルの読み書きのループを一斉に開始するスクリプトなどで
気の済むまでやるしか無いでしょう
もちろん、後からでも正常に処理できたかは分るように、読み書きする内容はキチンとプログラムしましょう
0963nobodyさん
03/03/11 21:58ID:???0968nobodyさん
03/03/13 01:28ID:???$logfileが重要かどうかではなくて、その内容によるYO
>>966
ファイルロックトも兼ねてテストすれば、問題点はすぐに気が付くハズ・・・
0970nobodyさん
03/03/13 01:54ID:???←ここで別プロセスがファイルを操作する危険も
flock( OUT, 2 );
print OUT @lines; ←この前までにプロセスが死んだらファイルは破損
flock( OUT, 8 );
←ここで別プロセスがファイルを操作する危険も
close(IN); ←実際の書き込みが行われるのはここ(オートフラッシュなしの場合)
0971nobodyさん
03/03/13 10:07ID:???なるほど、open(FH, ">filename") でファイルを開いただけでは
ファイルは変更されていない状態だと思っていましたが・・・確かに危険ですね
">>filename"などでオープンして、turncateで0指定する方法をとるべきか・・・
良い事を教えてもらいました。ありがとうございます
失礼しました
0972山崎渉
03/03/13 17:00ID:???0973931
03/03/15 11:29ID:???改造した部分だけのソース⇒http://csx.jp/~lgyec/ichats.data
ichatのソース⇒http://csx.jp/~lgyec/ichat.data
こういう風にやっても、自分の発言を削除をクリックしても”クリアメッセージ”と自動的に発動しません。
援助お願い致します。
0974ひよこ名無しさん
03/03/15 12:43ID:???(,,゚Д゚)http://www.geocities.co.jp/HeartLand-Yurinoki/3749/dustbox.html
0975名無し
03/03/15 16:35ID:55qzOCkchttp://www.kent-web.com/bbs/fantasy.html?
に、”タイトル”を入力する項目を追加したいのですが
いざやってみたら、上手くいきませんでした。
この場合、どこをどういじればいいのでしょうか?
0976ウマー(゚Д゚)@Apw5yill☆2ch
03/03/15 16:39ID:abzlUrYYみたいな、?1111を付け加えて表示させる物があります。そこで、
URL転送を使って、***.com/1111を入力すると、****.cgi?1111が表示
されるように、転送先を****.cgi?にしましたが無理でした。
なにかいい方法はありませんか?
0977007
03/03/15 16:48ID:???# タイトル名
$title = "Fantasy Board";
ってやつが
0978nobodyさん
03/03/15 16:53ID:???while (<IO>){
if ($_ =~ /<>$ip/){
@y2=split(/<>/,$_);
if ($y2[6] ne $ip){
push(@log,$_);
}else{
push(@log,'All Clear (^-^)v');
}
}else{
push(@log,$_);
}
}
0980ウマー(゚Д゚)@Apw5yill☆2ch
03/03/15 16:58ID:abzlUrYY0982nobodyさん
03/03/15 18:20ID:???sub deleteme{
#自分の発言消去
open (IO,"+<$logfile");
eval{flock(IO,2)};
while (<IO>){
if ($_ =~ /<>$ip/){
@y2=split(/<>/,$_);
if ($y2[6] ne $ip){
push(@log,$_);
}else{
push(@log,'All Clear (^-^)v');
}
}else{
push(@log,$_);
}
}
truncate(IO,0);
seek(IO,0,0);
print IO @log;
close (IO);
&reload2;
}
でいいですよね?そうしたらScript Errorがでました。
援助お願いします。
0984nobodyさん
03/03/15 21:59ID:6KH7Xn0j>URL転送を使って
多分/以降のデータは中継されないから無理
0985nobodyさん
03/03/15 22:06ID:???! i iノノリ)) 〉
i l l.´ヮ`ノリ <先生!こんなのがありました!
l く/_只ヽ
| ̄ ̄ ̄ ̄ ̄|
http://saitama.gasuki.com/aomori/
0986975
03/03/15 23:45ID:MaN1zNKvいや、掲示板のタイトルじゃなくて
ここのスレッドにタイトルをつけたいのです。
0987nobodyさん
03/03/16 13:58ID:???0988nobodyさん
03/03/16 13:59ID:t8L+n8I+0990nobodyさん
03/03/16 15:29ID:vOOsWTxU0992nobodyさん
03/03/16 17:44ID:KSrtergb0993nobodyさん
03/03/16 17:47ID:WBb98oow★その目で確認すべし!!★超おすすめ★
0995nobodyさん
03/03/16 18:08ID:vOOsWTxUAll Clear (^-^)v > () と名前のところにそのALL Clearとでて文字のところに()とでます。
援助お願いします。
0996nobodyさん
03/03/16 18:15ID:vOOsWTxUその自分の発言を削除を押した後発言をするとAll Clear (^-^)v > () が消えてしまいます。
0997nobodyさん
03/03/16 18:16ID:x5aWnNPV0998nobodyさん
03/03/16 18:24ID:MtdvS7v90999nobodyさん
03/03/16 18:24ID:MtdvS7v91000nobodyさん
03/03/16 18:24ID:MtdvS7v910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。