自作CGIを評価するスレ (672レス)
自作CGIを評価するスレ http://medaka.5ch.net/test/read.cgi/php/1049514428/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
357: 211 [3025] 03/06/17 06:07 ID:??? >>356 うーん、無理にスタックを意識して、 goto文を使用しようとは思わないです・・・。 あまり、ソースがトリッキーすぎると、 未来の俺から苦情がきます。 それでなくても、結構トリッキーっぽいから・・・ スタックとは、何なのかはっきり分かってなかったのですが、 いろいろ調べ回って、何なのか、何となく分かりました。 スタックについて、勉強させてもらう機会をいただいた皆さんに感謝です。 さて、また一つヘンテコなスクリプトを組みました。 複数のファイルから、文字列を検索するスクリプト。 My_Grep。 http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1181.zip 使い方などは、同封してるテキストファイルを読んでください。 改造してくれる人は、できればアップして、ソース見せてください。 勉強させてもらいます。 また、今回も「DirTree.pm」を同封してますが、 >>349の指摘された所は、直してます。 では、評価お願いします。 http://medaka.5ch.net/test/read.cgi/php/1049514428/357
358: 211 [3025] 03/06/17 06:17 ID:??? いきなりバグを見つけました。 http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1182.zip 修正しました。 http://medaka.5ch.net/test/read.cgi/php/1049514428/358
359: 211 [3025] 03/06/18 07:21 ID:??? バージョンアップしました。 http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1184.zip このバージョンで、 複数の拡張子のファイル検索が可能。 ログで、先頭のインデントなどのスペースを削るようにした。 ・・・誰か、評価お願いします・・・ 誰も手がってくれない。寂しいね。 http://medaka.5ch.net/test/read.cgi/php/1049514428/359
360: nobodyさん [sage] 03/06/18 15:16 ID:??? >>359 乙。 俺よりはるかにレヴェルの高いことやってらっしゃるので、 研究させてもらいます。 # 自作スクリプトを公開できるのはいつになることやら、、、 http://medaka.5ch.net/test/read.cgi/php/1049514428/360
361: 211 [3025] 03/06/19 02:58 ID:??? >>360 ども。 一応覗いてくれてた人がいてたんだね。 よかった。 まったく手がってもらえないから、かなり寂しかった(w やってる処理自体は、そんなにレベルの高い物じゃなかったりします。 俺も研究させてもらうので、何かスクリプト作ったらアップしてくれたら嬉しいです。 http://medaka.5ch.net/test/read.cgi/php/1049514428/361
362: 211 [3025] 03/06/19 02:59 ID:??? さて、また意味なくバージョンアップしました。 http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1189.zip このバージョンで、 結果ログファイルがHTMLファイルになって、 ヒットしたキーワードが強調表示されるようになった。 ファイルがバイナリファイルか調べるようにした。 拡張子指定で、ファイル名に拡張子と同じ文字列があったら、 そのファイルも検索対象になっていたバグを修正。 指定した拡張子のファイルが無かった時でも、 つづけて検索フェイズに移行してたバグを修正 Html.pmってファイルを書き換えると、 出力するログの見た目が変えられるかもしれません。 それと、今回のバージョンで謎なバグが一つ・・・ tmpファイルが、今までスクリプト終了と同時に、 削除されるようにしてたんだけど・・・ 今回のバージョンは、なぜかtmpファイルが残ります・・・。 何度も見直したんだけど、まったく原因がわかりませんでした。 どなたか、ご指摘いただけたら嬉しいです。 http://medaka.5ch.net/test/read.cgi/php/1049514428/362
363: nobodyさん [sage] 03/06/19 06:20 ID:??? >>362 いい加減ウザイ。完成してから後悔してくれ http://medaka.5ch.net/test/read.cgi/php/1049514428/363
364: 211 [sage] 03/06/19 14:12 ID:??? >>363 あら。 何か主旨が変わってきたね。 評価貰えるよう、スレを上げるために、 何もなくスレ上げてたら荒らしだから、 何か無いかと、がんばってバージョンアップしてたんだけど・・・。 でも、いくつか勉強させてもらったし・・・ この辺が潮時かな。 じゃ、俺のスクリプト公開は終了します。 http://medaka.5ch.net/test/read.cgi/php/1049514428/364
365: nobodyさん [sage] 03/06/19 14:28 ID:??? >>364 もう少し実用性のあるもので再チャレンジしてみたら? 今回のは正直言って使いたいと思えるものでなかったから 評価しなかった あれば便利とか使ってみたいと思えるものなら協力者も増えるのでは http://medaka.5ch.net/test/read.cgi/php/1049514428/365
366: 1 [sage] 03/06/21 10:11 ID:??? 自作CGIを評価するスレ このスレは終了いたしました。 みなさん書き込みありがとうございました。 投稿件数 : 365 最終投稿者: nobodyさん 最終投稿日: 03/06/19 http://medaka.5ch.net/test/read.cgi/php/1049514428/366
367: nobodyさん [sage] 03/06/21 17:05 ID:??? ∧__∧ / ̄ ̄ ̄ ̄ ̄ ̄ ( ^u^) < 乙彼様でした☆ と つ \______ (__つ 丿 し' http://medaka.5ch.net/test/read.cgi/php/1049514428/367
368: nobodyさん [sage] 03/06/22 07:46 ID:??? スレの趣向とは少し外れるんですが、 下記のロック、アンロックはどうでしょうか? # lock routine sub lock { $retry = 5; if (-e $lockex_file) { $mtime = (stat($lockex_file))[9]; if ($mtime + 600 < time) { rename($lockex_file, $lock_file) || &error("lock error"); } } while (1) { last if rename($lock_file, $lockex_file); if (--$retry < 0) { &error("lock error"); } } } # unlock routine sub unlock { if (-e $lockex_file) { rename($lockex_file, $lock_file) || &error("lock error"); } } 評価お願いします。 http://medaka.5ch.net/test/read.cgi/php/1049514428/368
369: nobodyさん [sage] 03/06/22 09:04 ID:??? >>368 いいんじゃないかな。 while文の所は・・・ while ($retry--) { return 0 if rename($lock_file, $lockex_file); } &error( 'Lock error' ); こうの方が良いかな。 http://medaka.5ch.net/test/read.cgi/php/1049514428/369
370: 368 [sage] 03/06/22 10:02 ID:??? >>369 どうもありがとうございます。 他のスレでこういう書き方をみかけました。 while (!rename($lock_file, $lockex_file) { if (--$retry <= 0) { &error("lock error"); } } >>369さんが書いてくれたものとどちらがいいんですかね? http://medaka.5ch.net/test/read.cgi/php/1049514428/370
371: nobodyさん [] 03/06/24 13:54 ID:01cZwzPj >>368 このルーチンだと穴がある。経験則だけど、アクセスが殺到すると簡単に壊れる。 説明するのめんどいので、 http://www.din.or.jp/~ohzaki/perl.htm#File_Lock この辺りでも読んでみて。 >>370 好みだと思う。 個人的には>>368も>>369も>>370もループの最中にreturnやら&errorで関数の 外に飛んでるので気持ち悪い(これも好みの問題)。 あと、>>368はテストが最大6回行われるのに大して、>>369と>>370は 5回なので等価なコードじゃなくなってる。 というわけで、個人的にはこう書くかな↓ my $retry = 5; for($retry++; $retry; $retry--){ last if rename($lock_file, $lockex_file); } error("lock error") if not $retry; http://medaka.5ch.net/test/read.cgi/php/1049514428/371
372: 368 [sage] 03/06/24 14:57 ID:??? >>371 ありがとうございます。 ロックが甘いということは分かりましたが、アンロックはどうでしょうか? まだ371さんがおっしゃったサイトは見てないのでなんとも言えませんが…。 もう少し勉強してみることにします。 指摘されたリトライですが、 if (--$retry <= 0) { こうですね。 http://medaka.5ch.net/test/read.cgi/php/1049514428/372
373: nobodyさん [sage] 03/06/24 15:24 ID:??? >>371 > このルーチンだと穴がある。経験則だけど、アクセスが殺到すると簡単に壊れる。 > 説明するのめんどいので、 > http://www.din.or.jp/~ohzaki/perl.htm#File_Lock > この辺りでも読んでみて。 その辺り読んで、載ってるルーチンそのまま使ってテストした所、 ファイル壊れました。 俺は、>>368くらいの簡単なロックで良いと思うけど。 このロックで壊れるようなアクセス受けてるって事は、 その説明に載ってるようなルーチンでも、ほぼ壊れる。 どんなロックしててもファイルは壊れるんだから、 小細工いれた重いロック処理するより、 簡単にロックする処理入れた方が良いような。 http://medaka.5ch.net/test/read.cgi/php/1049514428/373
374: nobodyさん [sage] 03/06/24 15:33 ID:??? >どんなロックしててもファイルは壊れるんだから そんなことはないよ。ただ言えることは、この板ではまだまともにロックできて いるルーチンが1つも書かれてないな。 http://medaka.5ch.net/test/read.cgi/php/1049514428/374
375: nobodyさん [sage] 03/06/24 15:35 ID:??? >>374 >そんなことはないよ。ただ言えることは、この板ではまだまともにロックできて >いるルーチンが1つも書かれてないな。 flock使っちゃだめ? http://medaka.5ch.net/test/read.cgi/php/1049514428/375
376: nobodyさん [sage] 03/06/24 15:36 ID:??? >>374 どんなに集中アクセスを受けても、 絶対壊れないファイルロックってある訳ない。 あったら、ぜひ見て見たい。 http://medaka.5ch.net/test/read.cgi/php/1049514428/376
377: nobodyさん [sage] 03/06/24 15:37 ID:??? >>375 あ、ちなみに、flockでも壊れるんで。ファイル。 http://medaka.5ch.net/test/read.cgi/php/1049514428/377
378: nobodyさん [sage] 03/06/24 15:40 ID:??? ↓これでもこわれる?(CSVの処理はPerlメモ参考にしてます) use strict; use Fcntl qw(:flock); $tmpfile = "$datafile".".$$.". time() .".csv"; #万が一リネーム失敗したときのために、 #ユニークなファイル名にしておく open (LOCKF, ">$datafile"."_lockf") or die("cannot open:$!"); #ロックファイルを作成する #(★注:ロックファイルは、各CSVごとにユニークに) flock (LOCKF, LOCK_EX); #ロックファイルをflockする open(IN, "< $datafile") or die("cannot open:$!"); # 読みのみモードで開く open(TMP,"> $tmpfile"); #テンポラリファイルを作成 while ($line = <IN>){ $line .= <IN> while ($line =~ tr/"// % 2 and !eof(IN)); $line =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/; @values = map {/^"(.*)"$/s ? scalar($_ = $1, s/""/"/g, $_) : $_} ($line =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g); #必要なものだけをEUCにして、出力時にSJISにする foreach $value (@values){ &jcode::convert(\$value, "euc"); }; #CSV形式に変換 $newline = join ',', map {(s/"/""/g or /[\r\n,]/) ? qq("$_") : $_} @values; print TMP "$newline\n" ;#テンポラリファイルに1レコード書き込み } close TMP; close IN; unlink $datafile; rename ($tmpfile, $datafile) or die ("cannot rename : $!"); close LOCKF; http://medaka.5ch.net/test/read.cgi/php/1049514428/378
379: 374 [sage] 03/06/24 15:41 ID:??? >絶対壊れないファイルロックってある訳ない この根拠がどこからくるのかわからないが、 少なくともとてつもないアクセス集中に対応できるように非ブロックモードで タイムアウトを備えてないとまず無理だということは教えておこう。 http://medaka.5ch.net/test/read.cgi/php/1049514428/379
380: 378 [sage] 03/06/24 15:41 ID:??? あ、EUCにしてからSJISにもどすの忘れてるけど、そこは気にしないで http://medaka.5ch.net/test/read.cgi/php/1049514428/380
381: 371 [] 03/06/24 15:46 ID:01cZwzPj > どんなロックしててもファイルは壊れるんだから、 そんなことはない。 というか、上(大崎氏の)のルーチンでファイル壊れたんならファイルシステムに 不備があるか、打ち間違いがあるかパーミッションやらの設定を誤ってるかどれか。 ファイルシステム上でrenameが衝突しないという条件の元でならうまく行くはず。 アクセス集中でファイルが壊れるのはロックの機構に不備がある だけで、正しい状況下で行われたUNIX系OSでのflockでは、ファイルシステム にバグがあるか、ファイルシステム自体のクラッシュでもない限り壊れない。 >>375 flockはNFS越しの場合に失敗するから、ファイスシステムを予め 調べておく必要がある。 NFS越しだとPOSIXモジュール使うかfcntl使う必要があった気がする。 >>376 > どんなに集中アクセスを受けても、 > 絶対壊れないファイルロックってある訳ない。 > あったら、ぜひ見て見たい。 非ネットワークファイルシステム+UNIX系OSでのflock。stableなバージョン上で これで壊れたって話は逆にあったら見てみたい。 http://medaka.5ch.net/test/read.cgi/php/1049514428/381
382: 371 [] 03/06/24 15:48 ID:01cZwzPj >>377 ネットワークファイルシステムを使ってる場合はね。 それ以外で壊れるという話は(ファイルシステム開発中のバグ以外は) 聞いたことない。再現できたら結構すごいと思うが。 http://medaka.5ch.net/test/read.cgi/php/1049514428/382
383: 371 [] 03/06/24 15:54 ID:01cZwzPj 変な憶測並べる前にFAQくらいみんな読もうよ。 http://elib.cs.berkeley.edu/~loretta/perl/nmanual/pod/perlfaq5/How_can_I_lock_a_file_.html http://medaka.5ch.net/test/read.cgi/php/1049514428/383
384: nobodyさん [sage] 03/06/24 18:50 ID:??? 追加書き込みすれば壊れない。 http://medaka.5ch.net/test/read.cgi/php/1049514428/384
385: 371 [] 03/06/24 19:10 ID:01cZwzPj >>384 2つのプロセスが同時に追加書込しようとしたら、 その部分は壊れるよ。 http://medaka.5ch.net/test/read.cgi/php/1049514428/385
386: nobodyさん [sage] 03/06/24 20:17 ID:??? >>371 って言うかOSが関与しないファイルロックで信頼できるアルゴリズムってあるの? http://medaka.5ch.net/test/read.cgi/php/1049514428/386
387: nobodyさん [sage] 03/06/24 20:18 ID:??? >>385 何を以て壊れるとするかだな。 http://medaka.5ch.net/test/read.cgi/php/1049514428/387
388: 378 [sage] 03/06/24 20:27 ID:??? >>378 はどうですか? http://medaka.5ch.net/test/read.cgi/php/1049514428/388
389: nobodyさん [sage] 03/06/24 20:34 ID:??? >>388 ええ、ばっちりシステムコールのflockがいらっしゃいますね。 http://medaka.5ch.net/test/read.cgi/php/1049514428/389
390: 371 [sage] 03/06/24 20:45 ID:??? >>386 symlinkにしろ、rewriteにしろ、mkdirにしろ、OSがファイルシステム上で衝突しないように 設計されているという大前提で作られてるし、実際衝突するかどうかはOS次第なので、 OSに非依存で汎用可能なアルゴリズムっていうのは原理的に不可能じゃないかと。 http://medaka.5ch.net/test/read.cgi/php/1049514428/390
391: nobodyさん [sage] 03/06/24 20:47 ID:??? >>390 その意見には激しく同意。 じゃあ、議論するだけ無駄だと思うわけだ。 http://medaka.5ch.net/test/read.cgi/php/1049514428/391
392: nobodyさん [sage] 03/06/24 20:48 ID:??? >OSがファイルシステム上で衝突しないように設計されているという大前提で作られてるし。 OS側でAtomicでもプログラム側がそうでなけりゃ・・・。 http://medaka.5ch.net/test/read.cgi/php/1049514428/392
393: nobodyさん [sage] 03/06/24 21:00 ID:??? >>373-392 スレ違い。 ファイルロックについてのスレあるから、 そこで熱く語ってくれ。 http://medaka.5ch.net/test/read.cgi/php/1049514428/393
394: nobodyさん [sage] 03/06/25 00:00 ID:??? require './my_flock.pl'; while (1) { while ( not defined ($lock = &my_flock()) ) {}; open (IN, "./count.txt"); $data = <IN>; close (IN); &my_funlock($lock); print ++$data. "\n"; while ( not defined ($lock = &my_flock()) ) {}; open (OUT, ">./count.txt"); print OUT $data. "\n"; close (OUT); &my_funlock($lock); if ($data >= 10000) { last; } } >>371のその辺のファイルロックを別ファイルに取って呼び出してる。 これを、二つのプロセスで実行してみろ。 無事に10000までカウントなんぞできんぞ。 http://medaka.5ch.net/test/read.cgi/php/1049514428/394
395: 374 [sage] 03/06/25 00:21 ID:??? >>394 まともに使えないならいっそ使わないほうが・・・ http://medaka.5ch.net/test/read.cgi/php/1049514428/395
396: nobodyさん [sage] 03/06/25 00:39 ID:??? >>395 はぁ? 全体に一度だけかけろとか言うのか? それでも壊れる。 何がまともに使えないだよ・・・ ルーチン呼び出すのに使えるも使えないもないだろヴォケ。 文句言う前に試せやハゲ。 試して、壊れなかったら文句言いにこいや。 http://medaka.5ch.net/test/read.cgi/php/1049514428/396
397: 374 [sage] 03/06/25 00:47 ID:??? ルーチンをまともに使えないヤシが晒されるスレはここでつか? http://medaka.5ch.net/test/read.cgi/php/1049514428/397
398: nobodyさん [sage] 03/06/25 00:57 ID:??? >>397 だから。 試せってよ・・・。 試しもしないで、使えてねーとか、使い方悪いとか。 そんな事言われても、説得力ねーっちゅーの。 こういう使い方したらファイル壊れないとか、 このタイミングでルーチン呼び出したら大丈夫だとか、 まー試しもしないで語ってるヤツに、 ロクな答えなんて返ってきそうにないけどな。 http://medaka.5ch.net/test/read.cgi/php/1049514428/398
399: 371 [] 03/06/25 00:59 ID:Q5i43+wA >>396 > 全体に一度だけかけろとか言うのか? だってそうしないとカウントが飛んじゃうでしょ。 > 試して、壊れなかったら文句言いにこいや。 一度に5プロセス動かして1000までやってみたけど壊れないね。 FreeBSD2.2.2 + Perl5.6.0だけど。 OS何使ってて壊れるの? > 396 http://medaka.5ch.net/test/read.cgi/php/1049514428/399
400: 371 [] 03/06/25 01:03 ID:Q5i43+wA プロセスを7つに増やしてテスト中。 時々ロックファイルが消えるな・・・。renameしかしてないはずなので、 ファイルシステムのバグか? でもデータが壊れるということは今のところない模様。テスト続行中。 http://medaka.5ch.net/test/read.cgi/php/1049514428/400
401: 371 [] 03/06/25 01:13 ID:Q5i43+wA FreeBSD2.2.8 + Perl 5.6.0でも実験したところ、20000件超えてるけど、特に問題なし。 FreeBSD2.2.2の方も、10000件行ってエラーなし。 合計30000件実験してみたけど衝突は起こってない模様(プロセスの譲り合いで片方のプロセスが ブロックする現象は見られたが)。 単にrenameシステムコールが衝突するようなファイルシステムを持つOSを使ってるだけ とか、そういうオチじゃなくて?>>398 http://medaka.5ch.net/test/read.cgi/php/1049514428/401
402: 371 [sage] 03/06/25 01:22 ID:??? ファイルが消える現象は、ロックファイルをディレクトリにすることで回避 # mkdir lockdir/lockfile で、20プロセス同時起動で、30000件やってみたけど、全く問題なし。 さすがに30000回連続で20プロセスが同時に1つのファイルにアクセス する状況はありえないだろうから、少なくともウチの環境上では きちんとロック機構が機能してると思われる。 で、たった2プロセス同時起動で10000件持たないファイルシステムを 持つ環境がどんな環境なのかとても気になるので早く教えてください>>398 あなたの言う条件↓は満たしましたよ。 > 文句言う前に試せやハゲ。 > 試して、壊れなかったら文句言いにこいや。 http://medaka.5ch.net/test/read.cgi/php/1049514428/402
403: nobodyさん [sage] 03/06/25 01:30 ID:??? おっと、ご苦労さん。 マジで? ファイル壊れない? こっちの環境は、Win2kだけど。 > 単にrenameシステムコールが衝突するようなファイルシステムを持つOSを使ってるだけ んな訳ない。 2kで、そんなバグ聞いた事ない。 ずっとテスト環境は2kだったからなぁ〜。 とりあえず、こっちもVineの環境があるから、そっちでも試す。 >で、たった2プロセス同時起動で10000件持たないファイルシステムを >持つ環境がどんな環境なのかとても気になるので早く教えてください>>398 煽りですか。 あんた、一言多いね。 http://medaka.5ch.net/test/read.cgi/php/1049514428/403
404: 371 [sage] 03/06/25 01:49 ID:??? > こっちの環境は、Win2kだけど。 多分そのせいじゃないかなぁ。ファイルシステム何になってます? こっちは今のところ30プロセス同時起動で30万件ノンストップで突破してるので、 スクリプト自体に問題があるとは思えない。 まぁ、このルーチンはrenameの堅牢性に頼ってるので、その点において汎用性は 薄いということを証明する形にはなったかも。 > 2kで、そんなバグ聞いた事ない。 1秒間に同じファイルを数十回renameする必要性ってあまりないからなぁ。 renameのファイルの取り合いって普通の状況だとまず起こりえないし。 ソース読んだら分かると思うけど、renameの空振り以外に原因は考えにくい ので、再現性あるなら追試してレポート出してみたら? http://medaka.5ch.net/test/read.cgi/php/1049514428/404
405: nobodyさん [sage] 03/06/25 02:14 ID:??? >>404 ファイルシステムは、もちろんNTFS Vineで試してみた。 たしかに、2kの時は途中ファイルが壊れてカウントが1に戻ったりしたけど、 Vineはそんな事なかった。 ・・・が、おかしい。 3つのプロセスで動かしたが、ログがおかしい。 同じ数字のカウントをする場面がある。 3つのプロセスでカウントしていったら、 同じ数字がカウントのログとして出るのはおかしいでしょ? そっちでは、ちゃんとカウントしていってる? http://medaka.5ch.net/test/read.cgi/php/1049514428/405
406: 371 [sage] 03/06/25 02:28 ID:??? >>405 >>394のソース直した?部分的でなく、全体をロックで囲まないと誤動作するよ。 print文の直上直下にあるunlockとlockの2行を外せばうまく行くと思う。 http://medaka.5ch.net/test/read.cgi/php/1049514428/406
407: nobodyさん [sage] 03/06/25 02:44 ID:??? >>406 あ・・・悪い。 修正してなかった。 ちゃんと動いてる。 もっと沢山のプロセスと、もっと沢山のループで試したかったけど、 Vineが入ってるPCのCPUが弱いんでやめた。 なんだ・・・今回の実験で、2kがいかに糞なのかが証明されたのか・・・? 結果は、壊れないファイルロックが存在したって事か? ・・・俺が、間違ってますた。 スマソ http://medaka.5ch.net/test/read.cgi/php/1049514428/407
408: 371 [sage] 03/06/25 11:01 ID:??? >>407 > 結果は、壊れないファイルロックが存在したって事か? 昨日、あのまま30プロセス同時起動のまま寝て、今朝見たら400万件を 突破してました。もちろんノンストップで。 30プロセスが400万回連続で殺到しても平気だということなんで、 少なくともウチの環境では、ほぼ「絶対に壊れないロック機構」と言い切って 差し支えないと思う。 どうでもいいけど、このテストスクリプトだと、count.txtを書き込みオープンした 瞬間にプロセスが落ちるとカウンタリセットされるよね。堅牢なスクリプトを作ろうと 思ったらそこまで気を遣う必要があるかも。 >>377 flockに書き換えて同じ事やってみたけど、20プロセス10万件で壊れずに 行ってます。やっぱりOSの問題か、flock over networkが原因ではないかと。 スレ違いなようなので、この辺で。 http://medaka.5ch.net/test/read.cgi/php/1049514428/408
409: nobodyさん [sage] 03/06/25 14:12 ID:??? 結論的には何が一番? http://medaka.5ch.net/test/read.cgi/php/1049514428/409
410: 368 [sage] 03/06/25 18:02 ID:??? >>393さんがおっしゃってる通りたしかにスレ違いですが、 とても興味深い話題をありがとうございます。 >>402さんがおっしゃってることを試す価値はありそうなので、 とりあえずファイルを使うロックから、 ディレクトリを使うロックに変えてみたいと思います。 http://medaka.5ch.net/test/read.cgi/php/1049514428/410
411: nobodyさん [sage] 03/06/25 22:47 ID:??? >>410 ないよ。flockが一番。 http://medaka.5ch.net/test/read.cgi/php/1049514428/411
412: nobodyさん [sage ] 03/06/25 22:57 ID:??? >>411 NFS越しでも? http://medaka.5ch.net/test/read.cgi/php/1049514428/412
413: nobodyさん [] 03/06/26 06:18 ID:EBHZ+AEW . http://medaka.5ch.net/test/read.cgi/php/1049514428/413
414: nobodyさん [sage] 03/06/26 09:03 ID:??? NFSなんか使うなよ(;´Д`) http://medaka.5ch.net/test/read.cgi/php/1049514428/414
415: 412 [sage] 03/06/26 10:55 ID:??? >>414 お客さんでそういうトコ、多いんですよ(萎 だから仕事でflock使う際は、インストール先の OSとファイルシステムは必ず確認。 http://medaka.5ch.net/test/read.cgi/php/1049514428/415
416: nobodyさん [sage] 03/06/26 11:36 ID:??? なるほど(;´Д`) http://medaka.5ch.net/test/read.cgi/php/1049514428/416
417: nobodyさん [sage] 03/06/26 12:53 ID:??? >>414 十分有り得るよ。うちの大学もそうだし。 http://medaka.5ch.net/test/read.cgi/php/1049514428/417
418: nobodyさん [sage] 03/06/26 21:01 ID:??? >>417 レガシーな大学でつね。 http://medaka.5ch.net/test/read.cgi/php/1049514428/418
419: ◆5vUH/J4K/c [sage] 03/07/05 05:02 ID:??? http://medaka.5ch.net/test/read.cgi/php/1049514428/419
420: nobodyさん [] 03/07/06 16:49 ID:orJjX/H+ 別スレでrename失敗どうたらこうたら、言ってるんですが、 そんなにrename失敗することあるんですか? http://medaka.5ch.net/test/read.cgi/php/1049514428/420
421: nobodyさん [sage] 03/07/06 16:50 ID:??? 権限がなければ http://medaka.5ch.net/test/read.cgi/php/1049514428/421
422: nobodyさん [] 03/07/06 17:08 ID:GI5yk6yl 権限があれば100%renameできるんですね? http://medaka.5ch.net/test/read.cgi/php/1049514428/422
423: nobodyさん [sage] 03/07/06 17:34 ID:??? 誰がそんなことを言った? http://medaka.5ch.net/test/read.cgi/php/1049514428/423
424: nobodyさん [sage] 03/07/06 21:37 ID:??? ⇒と⇔の違い知ってるか?大馬鹿者>>422 http://medaka.5ch.net/test/read.cgi/php/1049514428/424
425: nobodyさん [sage] 03/07/06 21:38 ID:??? L⇔R http://medaka.5ch.net/test/read.cgi/php/1049514428/425
426: nobodyさん [sage] 03/07/06 21:48 ID:??? 横浜⇔東京 http://medaka.5ch.net/test/read.cgi/php/1049514428/426
427: nobodyさん [sage] 03/07/06 23:37 ID:??? とんちんかんちん一休さんの>>422 http://medaka.5ch.net/test/read.cgi/php/1049514428/427
428: nobodyさん [sage] 03/07/06 23:40 ID:??? 将軍が彪の追い出しに成功してボリボリ食われちゃう一休さんの>422 http://medaka.5ch.net/test/read.cgi/php/1049514428/428
429: nobodyさん [sage] 03/07/07 11:59 ID:??? -=⇒ http://medaka.5ch.net/test/read.cgi/php/1049514428/429
430: 山崎 渉 [(^^)] 03/07/15 11:08 ID:??? __∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄ http://medaka.5ch.net/test/read.cgi/php/1049514428/430
431: nobodyさん [age] 03/07/25 23:38 ID:??? あげ http://medaka.5ch.net/test/read.cgi/php/1049514428/431
432: _ [sage] 03/07/25 23:47 ID:??? http://homepage.mac.com/hiroyuki44/hankaku09.html http://medaka.5ch.net/test/read.cgi/php/1049514428/432
433: 山崎 渉 [(^^)sage] 03/08/02 02:24 ID:??? ∧_∧ ( ^^ )< ぬるぽ(^^) http://medaka.5ch.net/test/read.cgi/php/1049514428/433
434: ぼるじょあ ◆ySd1dMH5Gk [(^^)] 03/08/02 04:52 ID:??? ∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ http://medaka.5ch.net/test/read.cgi/php/1049514428/434
435: nobodyさん [] 03/08/06 01:58 ID:u4hkzo1r まだ評価していただけますか? http://medaka.5ch.net/test/read.cgi/php/1049514428/435
436: nobodyさん [sage] 03/08/06 02:05 ID:??? どうぞ http://medaka.5ch.net/test/read.cgi/php/1049514428/436
437: 435 [] 03/08/06 02:10 ID:u4hkzo1r それでは。 ttp://www.42ch.net/UploaderSmall/source/1060103401.zip 昔作った掲示板です。今ではもうこんなにかけません。 http://medaka.5ch.net/test/read.cgi/php/1049514428/437
438: nobodyさん [sage] 03/08/06 02:44 ID:??? >>437 ぱっとみですが、スコープや、名前空間を理解していらっしゃるのでよく勉強されてると思われます。 私の趣味的にはグロブを使わないようにするともっとよさげかと・・・ http://medaka.5ch.net/test/read.cgi/php/1049514428/438
439: nobodyさん [sage] 03/08/06 03:48 ID:??? ttp://www.42ch.net/UploaderSmall/source/1060108917.zip 良かったらお願いします。 使い方はcgi呼び出して?ってリンク見ると大体書いてあります。 典型的な我流でCGIしか書いたことの無い人のソースだとは思います。 非常識な部分があればご指摘頂きたいです。 #普段タブ使っているのですが、環境に依存しそうなので #アップの際に、全てスペースに変換しました。 #個人的な情報も消してあります。ご理解ください。 http://medaka.5ch.net/test/read.cgi/php/1049514428/439
440: 向こうの472=475 [sage] 03/08/06 10:05 ID:??? >>439 コーディングスレの469さんか。(w 名前空間の扱いに振り回されてる感じがする。 基本的にパッケージ名や定数のハードコーディングは避けた方がいいし、 依存し合うものを別ファイルに分けると見通しが悪くなるだけだよ。 どうしても分けたいのなら各パーツはもっと役割分担を はっきりさせて汎用性を上げ、OO なスタイルで組むが吉。 http://medaka.5ch.net/test/read.cgi/php/1049514428/440
441: nobodyさん [sage] 03/08/06 10:38 ID:??? >>440 ここ過疎なので人すくなくてばれるだろうとは思ってました。。。 分けるのは、基本的に改造向けではじめました。 (HTML部分を分ける、とか。) あと、機能追加のたびに追加したりとかって感じです。 最初はあまり深く考えないで分けていたんですが 最近えらい悩むようになってしまって つきつめるとOOPにするしかないような気もしてきてしまします。 次になにか0から書くことがあったら、OOで書きたいとは思います。 これは今ある程度完成してしまってますし 身内で使ってくださる方がいるのであまりスタイルを変えるつもりはないです。 総書き直しでOOにしようとか毎晩のように思ったりするのですが なかなか手出しする気力も時間も・・・ やっぱOOかー http://medaka.5ch.net/test/read.cgi/php/1049514428/441
442: 441 [sage] 03/08/06 10:58 ID:??? しかもコーディングスレであとで言われたとこ 直す前のうpしてた ウワーン http://medaka.5ch.net/test/read.cgi/php/1049514428/442
443: nobodyさん [] 03/08/12 15:36 ID:QPay4kE6 >>442 age http://medaka.5ch.net/test/read.cgi/php/1049514428/443
444: 山崎 渉 [(^^)] 03/08/15 22:37 ID:??? (⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン http://medaka.5ch.net/test/read.cgi/php/1049514428/444
445: nobodyさん [ ] 03/08/30 22:39 ID:??? 52 名前:nobodyさん :03/08/30 20:46 ID:??? >>50 自作CGIを評価するスレ http://pc2.2ch.net/test/read.cgi/php/1049514428/ http://medaka.5ch.net/test/read.cgi/php/1049514428/445
446: nobodyさん [] 03/08/31 01:55 ID:6GeG39LL Blogの試作公開 http://ex.1000gex.net/blog.zip common.phpで初期設定。 排他制御も何も入れてないがとりあえず動いた。 これからトラックバックを盛り込むけど難儀するだろうなぁ http://medaka.5ch.net/test/read.cgi/php/1049514428/446
447: nobodyさん [sage] 03/08/31 02:19 ID:??? 何?評価して欲しいの? ただの宣伝? http://medaka.5ch.net/test/read.cgi/php/1049514428/447
448: nobodyさん [] 03/08/31 02:27 ID:6GeG39LL ダメ出しきのん。 SAFE_MODEでさっそく引っかかったが http://medaka.5ch.net/test/read.cgi/php/1049514428/448
449: nobodyさん [sage] 03/08/31 02:54 ID:??? 微妙な物作るな http://medaka.5ch.net/test/read.cgi/php/1049514428/449
450: ガイキチ厨房 [age] 03/08/31 06:44 ID:??? PHPでカウンタを作ってみたのですが、どなたかご意見下さい。 http://popup3.tok2.com/home/program/cgi-bin/uploader/source/File:0011.txt http://medaka.5ch.net/test/read.cgi/php/1049514428/450
451: nobodyさん [sage] 03/08/31 11:38 ID:??? こちら素人だが、ざっと読んで気づいた点を。 script書き始めなら上々の滑り出しだと思う。 ■L38の $ip のダブルクウォートは意図不明。 ■” と ’ が混在してるけど、このスクリプトで使われてる ” は上記をのぞいて ’ に統一可能。 ■L41は、$newdata = $newcont . '<>' . $_SERVER['REMOTE_ADDR'] ; と書けば十分なのでは。 ■関数名とレフトブラケットの間に半角スペースがあったり無かったりする。これは趣味だから どう書いてもいいと思うが、普通は入れない。制御語(ifとかforとか)の後には入れる。そうすることで 関数と制御構造を見分けやすくする。カラーリング機能のないエディタではこの方が見やすい気もする。 いずれにせよ、どっちかに統一したほうがよいと思われ。 ■切り詰めを忘れている。ので、現データが 13<>127.127.127.127 で上書きデータが、14<>25.25.25.25 だった 場合、14<>25.25.25.257.127 に。書き込んだ後で、ftruncate(); を使ってファイルを切り詰める必要あり。 http://medaka.5ch.net/test/read.cgi/php/1049514428/451
452: nobodyさん [sage] 03/08/31 11:40 ID:??? ■L29の rewind(); は意図不明。 ログファイルが壊れる(例えば 8424<>127.0.0.1420<>127.0.0.8420<>127.0.0.842の ように)から 入れたのなら、アイディアとしては◎だが、スマートな処理とはいえないかと。 ■あと、排他制御にバグがあるのでは。 ロックがかかっていても、fopen(); も flock(); も、 warning や fatal error (noticeも) を吐かないため、 処理が続行する。排他制御になってもならなくてもこのスクリプトは処理を最後まで実行するので、flock(); は ちゃんと働いてない。 実際には起こらないかも知れないが、論理上、ロックがかかっているために L32 の fgets(); が失敗して $buf に false が入ってカウンターが0に戻る可能性がある。L26でロックが取れなかった場合、 つまり前のリクエストを処理中の可能性がある場合、書き込みをスキップするかスクリプトを終了 するかブロックモードで待機させる必要があると思う。http://jp.php.net/flockにあるとおり、flock(); は 失敗すると false を返す。 ■同じ理由で、前のロックが邪魔してロックがかかっていないのに書き込みに進行してしまうことがある。 書き込みがいくつも重なると、dat の内容がが妙なことになる予感。ここらあたりを rewind(); が力技で 解消しているように見える。 http://medaka.5ch.net/test/read.cgi/php/1049514428/452
453: nobodyさん [sage] 03/08/31 21:50 ID:??? 本7に対してそこまでしなくていいのに http://medaka.5ch.net/test/read.cgi/php/1049514428/453
454: nobodyさん [] 03/08/31 21:56 ID:6GeG39LL ちなみにサンプルページ http://s2.arigato3.net/~hon7/blog/ ハイブリッドP2Pによるトラックバックを考えてます http://medaka.5ch.net/test/read.cgi/php/1049514428/454
455: nobodyさん [sage] 03/09/01 00:56 ID:??? まずsageろ 話はそれからだ http://medaka.5ch.net/test/read.cgi/php/1049514428/455
456: nobodyさん [sage] 03/09/01 01:41 ID:??? 相変わらず発言が電波過ぎる… http://medaka.5ch.net/test/read.cgi/php/1049514428/456
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 216 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.017s