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

【PHP】くだらねぇ質問はここに書き込みやがれpart4

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん05/03/13 16:08:32ID:???
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
09629572005/04/29(金) 13:03:41ID:???
>>961
実際に名前を出すのはどうかと思ったのですが、
レッツ以外にも、ググッて出てくるようなPHPスクリプトを配布しているサイトで、
読み込み時から書き込み終了までロックをしているサンプルって見た事無いんですが・・・

疑問に思ったのは、どのサンプルも書き込みの時だけロックを行っている。
また、読み込み時にロックしても、読み込んだ後にはロックを解除していて、
書き込み時に再度ロックして書き込み後にロックを解除しているというものが殆どで、
後者の方法でも、読み込み時のロック解除から書き込みのロックまでの間に
誰かのアクセスがあれば、結果的に同じカウンタ数を読み込むので無意味だと。

此処からは私の勝手な想像なのですが、
1つ目はこの方法でも、処理時間的にはそう簡単には懸念している不具合が起きないために
手を抜いている。
2つ目は単順にスクリプトを公開してる人間に、こういった問題意識が無い
又は問題は認識しているが技術力が足りない。
と考えているのですが、どうなのでしょう?

それとも、根本的に、公開されているスクリプトでは
私が懸念している不具合が起こる可能性は0%なのでしょうか?
0963nobodyさん2005/04/29(金) 14:15:49ID:???
単なる手抜きだと思うよ
それに同一ホストからでもリロードするたびにカウントがあがる
駄目カウンタも結構あるし
09649572005/04/29(金) 14:22:17ID:???
>>963
その辺は、俗に言う仕様じゃないでしょうか?
あとは、目的の違いかと。

単純にアクセス数だけをカウントする場合は、同一ホストとか関係無いでしょうし、
ものによっては、直前との同一ホストしか比較してないものもある。
これだと、同じホストで間隔明けて誰かがアクセスした後に
再度アクセスすればカウントアップされるし。

ただ、私が気にしているのは、更新されるべき値が他のアクセスで読み込まれ、
データベースで言う所のダーティーリードに相当するものが
何故放置されているのかが単純に疑問な訳で。
0965nobodyさん2005/04/29(金) 15:41:39ID:???
何故って所詮その程度のものだって事でそ
まねする必要なんか無いので好きなように書けばいいだぎゃ
0966nobodyさん2005/04/29(金) 16:10:04ID:???
>>964
それはレッツの劣化コピーが巷に溢れてる所為では。
タイミングもちゃんとしてあって、ロックが掛かってたら
ランダムに待ちして数回リトライしてるようなカウンターも見たことあるよ。

それよかカウンターのような恥ずかしいものを最近サイトに置いたことがないな。
09679572005/04/29(金) 16:51:46ID:???
>>965
自分はファイルにデータは一切記録させず、
全てDBで制御してるので、今まで全く気にしていなかったのですが、
他人のサイトを見たときに、気になっただけです。

>>966
なるほど、確かにレッツの劣化コピーという可能性はありますね。
標準のロックを使わずに独自にロックの仕組みを作ってる所とかはしっかりしてますね。

>それよかカウンターのような恥ずかしいものを最近サイトに置いたことがないな
カウンターのように、基礎が出来てないサイトって、
カウンター以外のスクリプトにも同様にロックの仕組みが不味いので気になってました。
0968nobodyさん2005/04/29(金) 17:38:15ID:???
>>967
オマイ、厨のくせに、なんだか偉そうだね。
0969nobodyさん2005/04/29(金) 18:05:13ID:???
完璧なカウンタを公開してくれるんでしょう。
0970nobodyさん2005/04/29(金) 18:36:06ID:???
おまえら、PHP書くときどんな書体使ってる?
読みやすいフォントがなかなか見つからない orz
0971nobodyさん2005/04/29(金) 18:55:51ID:djMTOoa/
MySQLを使わずにinet_atonする方法はないでしょうか?
0972nobodyさん2005/04/29(金) 18:57:33ID:???
>>970
Osaka
0973nobodyさん2005/04/29(金) 19:01:12ID:???
>>970
プログラム板にフォントスレあり。
09749712005/04/29(金) 19:04:16ID:???
ip2longでした
0975nobodyさん2005/04/29(金) 19:49:33ID:???
>>962,967
実際に起こりにくいのと起こってもそれが判明しにくいから
問題を認識(重要視か?)してない人は確かに多そうだよね。
敷居の低いPHPの特性上 とりあえず動けばいいや的な感じで
あまり追及しない人が多いというのもある気がする。

しかし"r+"で開いてflock()してる間に読み書きすれば済む話だから
独自ロックする意味がわからない。独自ロックって例えばどんなの?
0976nobodyさん2005/04/29(金) 20:10:58ID:???
>>975
お前さんが、そもそも問題を認識(重要視)してないんじゃないか?
flockだってロックの種類は読み込み・書き込み・解除しかなく、
それぞれを重複して掛けられない訳だ。
書き込み時だけロックしたって、他人は読む事は出来る。(ここで問題が発生)

読み込み時に、読み込みロックで開いて、カウントアップし、
書き込む前に、読み込みロックを解除したあと書き込みロックをすれば、
更にタイミング的にはシビアになるから問題が発生する頻度は減るが0%じゃない。

独自ロックの仕組み(大抵はファイルのリネームやロックしてるかのダミーファイル)を使うことにより、
読み込みや書き込みすら出来ないように(プログラム)で出来る。
実際にはflockしてないから読み書きできるが、この独自ロックのダミーファイルなどを見て、
ロックされてるかの判断が出来る。
さらに、ロックが何時まで経っても解除されないような自体でも、
タイムアウトを設けることで、強制的にロックも解除できる。
0977nobodyさん2005/04/29(金) 20:46:55ID:???
>>976
975だけどよくわからん
$txt="count.txt";
$fh=fopen($txt,"r+");
flock($fh,2);
$count=(int)fgets($fh);//読
rewind($fh);
ftruncate($fh,0);
fputs($fh,++$count);//書
flock($fh,3);
fclose($fh);
どこがまずいですか?
0978nobodyさん2005/04/29(金) 21:04:41ID:???
>>977
976じゃないけど、flockが全ての鯖で使えると思ってるのが馬鹿過ぎ。
つまり、そのコードのflock($fh,2);からflock($fh,3);までヤバ過ぎ。
0979ave2005/04/29(金) 21:08:01ID:???
このページにアクセスしようとすると、mysqlがどうたらこうたらとでて
ページにアクセスできないです。 助けてください
OS:windowsXP proffesional
0980ave2005/04/29(金) 21:10:20ID:???
このページにアクセスしようとすると、mysqlがどうたらこうたらとでて
ページにアクセスできないです。 助けてください
ttp://www.aqua-soft.org/
OS:windowsXP proffesional


0981nobodyさん2005/04/29(金) 21:13:12ID:TDd2BQoi
デヂエのようにユーザがSQLを意識せずに使えるようなwebデータベースはありますか?
phpで書かれたオープンソース版を探しています。phpMyadminを、管理でなく運用向けにしたようなイメージです。
デジエ買えばいいんですけど、貧乏なんで...
0982nobodyさん2005/04/29(金) 21:13:54ID:???
ロック処理なら俺はこんな感じで書いてるけど、何か気が付いたとこあったら教えて

if ($fp_lock = fopen($lock_file,"w")) {
  if(flock($fp_lock,LOCK_EX)){

    if($fp = fopen($txt,"r")){
      if(flock($fp, LOCK_SH)){
        $data=fgets($fp);
        flock($fp, LOCK_UN);
      }
      fclose($fp);
    }

    if($fp = fopen($txt,"w")){
      if(flock($fp, LOCK_EX)){
         rewind($fp);
         fputs($fp, $data);
         flock($fp, LOCK_UN);
      }
      fclose($fp);
    }

    flock($fp_lock,LOCK_UN);
  }
  fclose($fp_lock);
}
0983nobodyさん2005/04/29(金) 21:19:56ID:???
>>978
flock使える鯖で運用するなら、
flock使えない鯖のことなんて全く気にする必要ない。
具体的にどこがやばいか言ってみなよ。
0984nobodyさん2005/04/29(金) 22:26:18ID:???
>>978
馬鹿共は放っておけよ。
何が問題かわからない教えて君なんだから。
0985nobodyさん2005/04/29(金) 23:02:39ID:???
>>975,977です。
>>978
実用時はfopen(),flock()でfalseが返ってきたら
処理を止めるようにしてるし、使えないサーバでは使いません
977ではできるだけ単純でわかりやすいコードにしたつもり
>>984
おれが教えて君ですかね。むしろ978が説得力ないんだけど。
何が問題かわからない人のために簡単に説明すると
977は、排他ロックを1回でその間に読み書き、です。
(976はそれを理解していなかったからコードを書いた)
これと比べてダミーファイル等の自作ロック処理がどう有用なのか疑問でした。
PearlのCGIでダミーファイルでのロックを見た事あるけど
関数が豊富なPHPでは必要だと思わなかったんだよね。その確認でした。
(今のところまともな反論はないから「必要ない」かな?)

そもそも読み・書きを別のfopen(),flock()で行うのが無駄な処理なのに
そうする人が多いのが不思議。
0986nobodyさん2005/04/29(金) 23:38:02ID:???
>>953
正規表現分からん
かったので調べてバッチリ英字だけ取ってくることに成功しました。
ありがとう。
0987nobodyさんNGNG
PHP+MySQLで
データベースから抽出したデータ
\\5,600を (バックスラッシュは実際は半角

stripslashes(\\5,600) として出力してますが

本当は \5,600 と出力したいとです・・
文字コードはeucです
0988nobodyさん2005/04/30(土) 00:12:29ID:???
>>987
何を言いたいのか分からん。
円マークは、eucなどのマルチバイトの領域では無く、asciiコード(0x20-0x7e)の領域に含まれる。
(正確には、ISO646規格による日本独自の記号。)
eucだろうがjisだろうがsjisだろうが、\を出力するには(相手がうまく表示する事を期待して)0x5cを使うしか選択肢が無い。
0989nobodyさん2005/04/30(土) 00:15:59ID:???
実体参照で ¥ という選択肢はなかったことにしたいのですね。
0990nobodyさん2005/04/30(土) 00:50:31ID:???
>>982
if文で囲ってるけど、@演算子使わんの?
0991nobodyさんNGNG
>>988
よくわからなくてすいません・・

要は、 /(バックスラッシュのつもり)を \ か¥で出力したいんです
0992nobodyさん2005/04/30(土) 01:04:05ID:???
とっとと ¥ か 全角¥を使いなさい。
0993nobodyさん2005/04/30(土) 01:08:48ID:wZKX7Atj
session_set_save_handlerで
クラスメソッドを指定することは出来ないのでしょうか?
存在するクラスメソッドを指定しても
Argument 1 is not a valid callback
と言われます。
0994nobodyさんNGNG
>>992
そうしたいのですが、、
ereg_replace("\\", "¥", "//5,600")

とすると

Warning: ereg_replace(): REG_EESCAPE
というエラーがでてしますんです
0995nobodyさん2005/04/30(土) 01:29:21ID:???
>>994
>>646
<!-- チラシの余白
646を書いたのはオイラなのだけど、それを書くまでは元質問者が粘着してたのに
以降はレスどころか解決できたのかどうかさえ無いのは辛いな。。 -->
0996nobodyさんNGNG
>>995
ありがとうございます!!

\\の場合は、REG_EESCAPEが出るので 最後に\があるのがまずい。
なにかつけなきゃいけないんだが、パターンの一部に組み込まれる文字だとまずい。
の文にときめきを感じました。

いけましたです
09979932005/04/30(土) 01:51:54ID:???
なんか出来ないみたいですね
気持ち悪いけど関数にしました
0998nobodyさん2005/04/30(土) 07:30:00ID:???
0999nobodyさん2005/04/30(土) 07:30:45ID:???
*
1000nobodyさん2005/04/30(土) 07:31:23ID:MBOW+yPq
(・ω・)v
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。