自作CGIを評価するスレ (672レス)
上下前次1-新
377(2): 03/06/24 15:37 ID:??? AAS
>>375
あ、ちなみに、flockでも壊れるんで。ファイル。
378(2): 03/06/24 15:40 ID:??? AAS
AA省
379: 374 03/06/24 15:41 ID:??? AAS
>絶対壊れないファイルロックってある訳ない
この根拠がどこからくるのかわからないが、
少なくともとてつもないアクセス集中に対応できるように非ブロックモードで
タイムアウトを備えてないとまず無理だということは教えておこう。
380: 378 03/06/24 15:41 ID:??? AAS
あ、EUCにしてからSJISにもどすの忘れてるけど、そこは気にしないで
381: 371 03/06/24 15:46 ID:01cZwzPj(2/5) AAS
> どんなロックしててもファイルは壊れるんだから、
そんなことはない。
というか、上(大崎氏の)のルーチンでファイル壊れたんならファイルシステムに
不備があるか、打ち間違いがあるかパーミッションやらの設定を誤ってるかどれか。
ファイルシステム上でrenameが衝突しないという条件の元でならうまく行くはず。
アクセス集中でファイルが壊れるのはロックの機構に不備がある
だけで、正しい状況下で行われたUNIX系OSでのflockでは、ファイルシステム
にバグがあるか、ファイルシステム自体のクラッシュでもない限り壊れない。
>>375
flockはNFS越しの場合に失敗するから、ファイスシステムを予め
省8
382: 371 03/06/24 15:48 ID:01cZwzPj(3/5) AAS
>>377
ネットワークファイルシステムを使ってる場合はね。
それ以外で壊れるという話は(ファイルシステム開発中のバグ以外は)
聞いたことない。再現できたら結構すごいと思うが。
383: 371 03/06/24 15:54 ID:01cZwzPj(4/5) AAS
変な憶測並べる前にFAQくらいみんな読もうよ。
外部リンク[html]:elib.cs.berkeley.edu
384(1): 03/06/24 18:50 ID:??? AAS
追加書き込みすれば壊れない。
385(1): 371 03/06/24 19:10 ID:01cZwzPj(5/5) AAS
>>384
2つのプロセスが同時に追加書込しようとしたら、
その部分は壊れるよ。
386(1): 03/06/24 20:17 ID:??? AAS
>>371
って言うかOSが関与しないファイルロックで信頼できるアルゴリズムってあるの?
387: 03/06/24 20:18 ID:??? AAS
>>385
何を以て壊れるとするかだな。
388(1): 378 03/06/24 20:27 ID:??? AAS
>>378
はどうですか?
389: 03/06/24 20:34 ID:??? AAS
>>388
ええ、ばっちりシステムコールのflockがいらっしゃいますね。
390(1): 371 03/06/24 20:45 ID:??? AAS
>>386
symlinkにしろ、rewriteにしろ、mkdirにしろ、OSがファイルシステム上で衝突しないように
設計されているという大前提で作られてるし、実際衝突するかどうかはOS次第なので、
OSに非依存で汎用可能なアルゴリズムっていうのは原理的に不可能じゃないかと。
391: 03/06/24 20:47 ID:??? AAS
>>390
その意見には激しく同意。
じゃあ、議論するだけ無駄だと思うわけだ。
392: 03/06/24 20:48 ID:??? AAS
>OSがファイルシステム上で衝突しないように設計されているという大前提で作られてるし。
OS側でAtomicでもプログラム側がそうでなけりゃ・・・。
393(1): 03/06/24 21:00 ID:??? AAS
>>373-392
スレ違い。
ファイルロックについてのスレあるから、
そこで熱く語ってくれ。
394(2): 03/06/25 00:00 ID:??? AAS
AA省
395(1): 374 03/06/25 00:21 ID:??? AAS
>>394
まともに使えないならいっそ使わないほうが・・・
396(1): 03/06/25 00:39 ID:??? AAS
>>395
はぁ?
全体に一度だけかけろとか言うのか?
それでも壊れる。
何がまともに使えないだよ・・・
ルーチン呼び出すのに使えるも使えないもないだろヴォケ。
文句言う前に試せやハゲ。
試して、壊れなかったら文句言いにこいや。
397(1): 374 03/06/25 00:47 ID:??? AAS
ルーチンをまともに使えないヤシが晒されるスレはここでつか?
398(3): 03/06/25 00:57 ID:??? AAS
>>397
だから。
試せってよ・・・。
試しもしないで、使えてねーとか、使い方悪いとか。
そんな事言われても、説得力ねーっちゅーの。
こういう使い方したらファイル壊れないとか、
このタイミングでルーチン呼び出したら大丈夫だとか、
まー試しもしないで語ってるヤツに、
ロクな答えなんて返ってきそうにないけどな。
399: 371 03/06/25 00:59 ID:Q5i43+wA(1/3) AAS
>>396
> 全体に一度だけかけろとか言うのか?
だってそうしないとカウントが飛んじゃうでしょ。
> 試して、壊れなかったら文句言いにこいや。
一度に5プロセス動かして1000までやってみたけど壊れないね。
FreeBSD2.2.2 + Perl5.6.0だけど。
OS何使ってて壊れるの? > 396
400: 371 03/06/25 01:03 ID:Q5i43+wA(2/3) AAS
プロセスを7つに増やしてテスト中。
時々ロックファイルが消えるな・・・。renameしかしてないはずなので、
ファイルシステムのバグか?
でもデータが壊れるということは今のところない模様。テスト続行中。
401: 371 03/06/25 01:13 ID:Q5i43+wA(3/3) AAS
FreeBSD2.2.8 + Perl 5.6.0でも実験したところ、20000件超えてるけど、特に問題なし。
FreeBSD2.2.2の方も、10000件行ってエラーなし。
合計30000件実験してみたけど衝突は起こってない模様(プロセスの譲り合いで片方のプロセスが
ブロックする現象は見られたが)。
単にrenameシステムコールが衝突するようなファイルシステムを持つOSを使ってるだけ
とか、そういうオチじゃなくて?>>398
402(1): 371 03/06/25 01:22 ID:??? AAS
ファイルが消える現象は、ロックファイルをディレクトリにすることで回避
# mkdir lockdir/lockfile
で、20プロセス同時起動で、30000件やってみたけど、全く問題なし。
さすがに30000回連続で20プロセスが同時に1つのファイルにアクセス
する状況はありえないだろうから、少なくともウチの環境上では
きちんとロック機構が機能してると思われる。
で、たった2プロセス同時起動で10000件持たないファイルシステムを
持つ環境がどんな環境なのかとても気になるので早く教えてください>>398
あなたの言う条件↓は満たしましたよ。
> 文句言う前に試せやハゲ。
省1
403: 03/06/25 01:30 ID:??? AAS
おっと、ご苦労さん。
マジで?
ファイル壊れない?
こっちの環境は、Win2kだけど。
> 単にrenameシステムコールが衝突するようなファイルシステムを持つOSを使ってるだけ
んな訳ない。
2kで、そんなバグ聞いた事ない。
ずっとテスト環境は2kだったからなぁ〜。
とりあえず、こっちもVineの環境があるから、そっちでも試す。
>で、たった2プロセス同時起動で10000件持たないファイルシステムを
省3
404(1): 371 03/06/25 01:49 ID:??? AAS
> こっちの環境は、Win2kだけど。
多分そのせいじゃないかなぁ。ファイルシステム何になってます?
こっちは今のところ30プロセス同時起動で30万件ノンストップで突破してるので、
スクリプト自体に問題があるとは思えない。
まぁ、このルーチンはrenameの堅牢性に頼ってるので、その点において汎用性は
薄いということを証明する形にはなったかも。
> 2kで、そんなバグ聞いた事ない。
1秒間に同じファイルを数十回renameする必要性ってあまりないからなぁ。
renameのファイルの取り合いって普通の状況だとまず起こりえないし。
ソース読んだら分かると思うけど、renameの空振り以外に原因は考えにくい
省1
405(1): 03/06/25 02:14 ID:??? AAS
>>404
ファイルシステムは、もちろんNTFS
Vineで試してみた。
たしかに、2kの時は途中ファイルが壊れてカウントが1に戻ったりしたけど、
Vineはそんな事なかった。
・・・が、おかしい。
3つのプロセスで動かしたが、ログがおかしい。
同じ数字のカウントをする場面がある。
3つのプロセスでカウントしていったら、
同じ数字がカウントのログとして出るのはおかしいでしょ?
省1
406(1): 371 03/06/25 02:28 ID:??? AAS
>>405
>>394のソース直した?部分的でなく、全体をロックで囲まないと誤動作するよ。
print文の直上直下にあるunlockとlockの2行を外せばうまく行くと思う。
407(1): 03/06/25 02:44 ID:??? AAS
>>406
あ・・・悪い。
修正してなかった。
ちゃんと動いてる。
もっと沢山のプロセスと、もっと沢山のループで試したかったけど、
Vineが入ってるPCのCPUが弱いんでやめた。
なんだ・・・今回の実験で、2kがいかに糞なのかが証明されたのか・・・?
結果は、壊れないファイルロックが存在したって事か?
・・・俺が、間違ってますた。 スマソ
408: 371 03/06/25 11:01 ID:??? AAS
>>407
> 結果は、壊れないファイルロックが存在したって事か?
昨日、あのまま30プロセス同時起動のまま寝て、今朝見たら400万件を
突破してました。もちろんノンストップで。
30プロセスが400万回連続で殺到しても平気だということなんで、
少なくともウチの環境では、ほぼ「絶対に壊れないロック機構」と言い切って
差し支えないと思う。
どうでもいいけど、このテストスクリプトだと、count.txtを書き込みオープンした
瞬間にプロセスが落ちるとカウンタリセットされるよね。堅牢なスクリプトを作ろうと
思ったらそこまで気を遣う必要があるかも。
省4
409: 03/06/25 14:12 ID:??? AAS
結論的には何が一番?
410(1): 368 03/06/25 18:02 ID:??? AAS
>>393さんがおっしゃってる通りたしかにスレ違いですが、
とても興味深い話題をありがとうございます。
>>402さんがおっしゃってることを試す価値はありそうなので、
とりあえずファイルを使うロックから、
ディレクトリを使うロックに変えてみたいと思います。
411(1): 03/06/25 22:47 ID:??? AAS
>>410
ないよ。flockが一番。
412(1): [sage ] 03/06/25 22:57 ID:??? AAS
>>411
NFS越しでも?
413: 03/06/26 06:18 ID:EBHZ+AEW(1) AAS
.
414(2): 03/06/26 09:03 ID:??? AAS
NFSなんか使うなよ(;´Д`)
415: 412 03/06/26 10:55 ID:??? AAS
>>414
お客さんでそういうトコ、多いんですよ(萎
だから仕事でflock使う際は、インストール先の
OSとファイルシステムは必ず確認。
416: 03/06/26 11:36 ID:??? AAS
なるほど(;´Д`)
417(1): 03/06/26 12:53 ID:??? AAS
>>414
十分有り得るよ。うちの大学もそうだし。
418: 03/06/26 21:01 ID:??? AAS
>>417
レガシーな大学でつね。
419: ◆5vUH/J4K/c 03/07/05 05:02 ID:??? AAS
420: 03/07/06 16:49 ID:orJjX/H+(1) AAS
別スレでrename失敗どうたらこうたら、言ってるんですが、
そんなにrename失敗することあるんですか?
421: 03/07/06 16:50 ID:??? AAS
権限がなければ
422(3): 03/07/06 17:08 ID:GI5yk6yl(1) AAS
権限があれば100%renameできるんですね?
423: 03/07/06 17:34 ID:??? AAS
誰がそんなことを言った?
424: 03/07/06 21:37 ID:??? AAS
⇒と⇔の違い知ってるか?大馬鹿者>>422
425: 03/07/06 21:38 ID:??? AAS
L⇔R
426: 03/07/06 21:48 ID:??? AAS
横浜⇔東京
427: 03/07/06 23:37 ID:??? AAS
とんちんかんちん一休さんの>>422
428: 03/07/06 23:40 ID:??? AAS
将軍が彪の追い出しに成功してボリボリ食われちゃう一休さんの>422
429: 03/07/07 11:59 ID:??? AAS
-=⇒
430: 山崎 渉 [(^^)] 03/07/15 11:08 ID:??? AAS
AA省
431: [age] 03/07/25 23:38 ID:??? AAS
あげ
432: _ 03/07/25 23:47 ID:??? AAS
外部リンク[html]:homepage.mac.com
433(1): 山崎 渉 [(^^)sage] 03/08/02 02:24 ID:??? AAS
∧_∧
( ^^ )< ぬるぽ(^^)
434: ぼるじょあ ◆ySd1dMH5Gk [(^^)] 03/08/02 04:52 ID:??? AAS
AA省
435(1): 03/08/06 01:58 ID:u4hkzo1r(1/2) AAS
まだ評価していただけますか?
436: 03/08/06 02:05 ID:??? AAS
どうぞ
437(1): 435 03/08/06 02:10 ID:u4hkzo1r(2/2) AAS
それでは。
外部リンク[zip]:www.42ch.net
昔作った掲示板です。今ではもうこんなにかけません。
438: 03/08/06 02:44 ID:??? AAS
>>437
ぱっとみですが、スコープや、名前空間を理解していらっしゃるのでよく勉強されてると思われます。
私の趣味的にはグロブを使わないようにするともっとよさげかと・・・
439(1): 03/08/06 03:48 ID:??? AAS
外部リンク[zip]:www.42ch.net
良かったらお願いします。
使い方はcgi呼び出して?ってリンク見ると大体書いてあります。
典型的な我流でCGIしか書いたことの無い人のソースだとは思います。
非常識な部分があればご指摘頂きたいです。
#普段タブ使っているのですが、環境に依存しそうなので
#アップの際に、全てスペースに変換しました。
#個人的な情報も消してあります。ご理解ください。
440(1): 向こうの472=475 03/08/06 10:05 ID:??? AAS
>>439
コーディングスレの469さんか。(w
名前空間の扱いに振り回されてる感じがする。
基本的にパッケージ名や定数のハードコーディングは避けた方がいいし、
依存し合うものを別ファイルに分けると見通しが悪くなるだけだよ。
どうしても分けたいのなら各パーツはもっと役割分担を
はっきりさせて汎用性を上げ、OO なスタイルで組むが吉。
441(1): 03/08/06 10:38 ID:??? AAS
>>440
ここ過疎なので人すくなくてばれるだろうとは思ってました。。。
分けるのは、基本的に改造向けではじめました。
(HTML部分を分ける、とか。)
あと、機能追加のたびに追加したりとかって感じです。
最初はあまり深く考えないで分けていたんですが
最近えらい悩むようになってしまって
つきつめるとOOPにするしかないような気もしてきてしまします。
次になにか0から書くことがあったら、OOで書きたいとは思います。
これは今ある程度完成してしまってますし
省4
442(1): 441 03/08/06 10:58 ID:??? AAS
しかもコーディングスレであとで言われたとこ
直す前のうpしてた ウワーン
443: 03/08/12 15:36 ID:QPay4kE6(1) AAS
>>442
age
444: 山崎 渉 [(^^)] 03/08/15 22:37 ID:??? AAS
AA省
445: [ ] 03/08/30 22:39 ID:??? AAS
52 名前:nobodyさん :03/08/30 20:46 ID:???
>>50
自作CGIを評価するスレ
2chスレ:php
446: 03/08/31 01:55 ID:6GeG39LL(1/3) AAS
Blogの試作公開
外部リンク[zip]:ex.1000gex.net
common.phpで初期設定。
排他制御も何も入れてないがとりあえず動いた。
これからトラックバックを盛り込むけど難儀するだろうなぁ
447: 03/08/31 02:19 ID:??? AAS
何?評価して欲しいの?
ただの宣伝?
448: 03/08/31 02:27 ID:6GeG39LL(2/3) AAS
ダメ出しきのん。
SAFE_MODEでさっそく引っかかったが
449: 03/08/31 02:54 ID:??? AAS
微妙な物作るな
450: ガイキチ厨房 [age] 03/08/31 06:44 ID:??? AAS
PHPでカウンタを作ってみたのですが、どなたかご意見下さい。
外部リンク[txt]:popup3.tok2.com
451: 03/08/31 11:38 ID:??? AAS
こちら素人だが、ざっと読んで気づいた点を。
script書き始めなら上々の滑り出しだと思う。
■L38の $ip のダブルクウォートは意図不明。
■” と ’ が混在してるけど、このスクリプトで使われてる ” は上記をのぞいて ’ に統一可能。
■L41は、$newdata = $newcont . '<>' . $_SERVER['REMOTE_ADDR'] ; と書けば十分なのでは。
■関数名とレフトブラケットの間に半角スペースがあったり無かったりする。これは趣味だから
どう書いてもいいと思うが、普通は入れない。制御語(ifとかforとか)の後には入れる。そうすることで
関数と制御構造を見分けやすくする。カラーリング機能のないエディタではこの方が見やすい気もする。
いずれにせよ、どっちかに統一したほうがよいと思われ。
省2
452(1): 03/08/31 11:40 ID:??? AAS
■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でロックが取れなかった場合、
つまり前のリクエストを処理中の可能性がある場合、書き込みをスキップするかスクリプトを終了
省5
453: 03/08/31 21:50 ID:??? AAS
本7に対してそこまでしなくていいのに
454: 03/08/31 21:56 ID:6GeG39LL(3/3) AAS
ちなみにサンプルページ
外部リンク:s2.arigato3.net
ハイブリッドP2Pによるトラックバックを考えてます
455: 03/09/01 00:56 ID:??? AAS
まずsageろ
話はそれからだ
456: 03/09/01 01:41 ID:??? AAS
相変わらず発言が電波過ぎる…
457(1): ガイキチ厨房 03/09/01 16:10 ID:??? AAS
>>452
詳しく指摘していただきありがとうございます。
とりあえず''に統一し、関数名とレフトブラケットの間のスペースを
制御構造のみ入れるようにしました。
また、書き込み処理を行った後に、
// ファイルを切り詰める
ftruncate($fp, ftell($fp));
という処理を加えました。
省4
458: ガイキチ厨房 03/09/01 18:57 ID:??? AAS
すいませんURL間違えました。正しくはこちらです。
外部リンク[php]:itbtech.itboost.co.jp
459(1): 03/09/01 23:17 ID:??? AAS
Perlでも評価してもらえます?
460: 03/09/02 01:39 ID:??? AAS
>>459
>>1
461: 03/09/02 16:15 ID:??? AAS
>457
ああごめん。Manualみたらおもっくそそう書いてあった、、。
flockでとまるから一般の環境なら多分大丈夫だね。
こっちの検証スクリプトの間違いなのでflockとrewindの話しはなかったことに。
秒間50リクエストくらいでは問題なかったです(php4.3.0 apache1.3.27 RHLinux)。
ftruncate ( $fp , ftell ( $fp ) ) ; は ( $fp , strlen ( $newdata ) ) ; なんちゅう書き方もある。
462: ガイキチ厨房 03/09/02 19:51 ID:??? AAS
なるほど、参考になりました。ありがとうございます。
463(2): 03/09/03 02:03 ID:6rADPhxn(1) AAS
とある会社の部活動のHPを管理している者です。
Web上で部の共有資産の貸し出し申し込み等の管理を行えるといいなぁ、と思いいろいろとCGIを探してはいるのですがなかなか見つかりません。
探しているのは、次のようなCGIです。
1.画面で借りたい物を選択・自分の名前・貸出期間等の入力、申し込み
2.画面上では「貸し出し中」等に表記が変化(それか削除されるなど、申し込みが行えない状態に変化)
3.sendmailが使えないサーバなので、申し込みがあったことをログに吐き出し、管理人が定期的にそれをチェックし貸し出す
こういうものです。
サーバはinfoseekのiswebでPerl、Python、Ruby、PHPが使えます。
ショッピングカートCGIを活用してもいいなと思ったのですが、sendmailを利用する物がほとんどで、上記のようにログにのみはき出す物はあったことはあったのですがシェアウェア(\15K!)でした。
それほど資産の数が多いわけでもなく、貸し出し回数もそんなに多くないので、15000円もかけるわけにはいきません。
省2
464(2): 03/09/03 04:27 ID:??? AAS
>>463
>>1
465(1): sage 03/09/03 12:28 ID:Udj8Y4pI(1) AAS
>464
463です
え〜と。
スレ違いだ、ということですか…?
…すいませんでした。
466(1): 03/09/03 13:26 ID:??? AAS
sageはmail欄でw。
どっかに「こんなCGI探してます」的なスレあったハズだよ。
467(1): 03/09/03 13:44 ID:??? AAS
>>465
>スレ違いだ、ということですか…?
スレ違いじゃないと思うんだったら自作CGIへのリンク貼れよ。
自作CGIを評価するスレなんだからさ。
468(1): 03/09/03 18:02 ID:??? AAS
【CGI】こんなCGI探してますver.10【素材】
2chスレ:hp
Web製作板でつ。
469: 463 03/09/04 00:28 ID:??? AAS
>>464
>>467
ご迷惑をおかけしました。
>>466
>>468
そこに行ってみます。ありがとうございます
470: [age] 03/10/02 12:00 ID:??? AAS
y
471: 03/10/02 22:11 ID:??? AAS
perlでRead-Write Lockを実装してみますた。
複数プロセスでの10,000件書き込み耐久試験もクリアしたっぽいです。
ただ、ちょっと遅いように感じるのですがどでしょ?
外部リンク[html]:do.sakura.ne.jp
472: 03/10/02 22:50 ID:??? AAS
flockがあるし。
473(2): 03/10/07 02:23 ID:86/MwT3y(1/3) AAS
知識ゼロからがんばってXML化にこぎつけました。
スタイルシートだけでWebデザインが可能です。
PHP4+MySQL
外部リンク[php]:arigato3.s36.xrea.com
474(2): 03/10/07 03:18 ID:??? AAS
>>473
すごいね。どのくらいすごいのかいまいちわからんけど。
どのくらい時間かかった?
475: 03/10/07 04:42 ID:??? AAS
>>474
2chスレ:hosting
以後放置で。
476(1): 03/10/07 06:12 ID:??? AAS
>>473
ダメXMLの見本として宣伝してもいいですか?っていうくらいダメなXML。
上下前次1-新書関写板覧索設栞歴
あと 196 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.037s