トップページ⇒php
949コメント332KB

PHP + MySQL

■ このスレッドは過去ログ倉庫に格納されています
0001ECY NGNG
そろそろPHP + MySQLについても語ってほしい脳
0002echo NGNG
ソレハドウカナ?
0003初期不良 NGNG
my もほとんど扱い方としては pg と変わらないの?
両方インストール済んでこれから試そうってところなんだけど。
0004初期不良 NGNG
あ、Postgre の方はそこら辺に公開されてた掲示板 PHP スクリプトで
試してみたんですけど、重くて掲示板には向いてないと思ったので...
0005名無しさん@お腹いっぱい。 NGNG
myとかpgとか中途半端な略はやめようよ。
厨房くさくてかなわん。
0006名無しさん@お腹いっぱい。 NGNG
イヤ、わかりやすくていいよ。うん。
0007union使えないの? NGNG
とりあえず打倒pg??
0008名無しさん NGNG
打倒とか言うと荒れますよ。

女の子と話していて、他の女の話をすると異常に機嫌が悪くなることがある。
「なんで他の女の話を持ち出すの?」とかって。
それと同じ感じで、PostgreSQL の話をしている時に、Oracle などとの比較を
持ち出されると過剰反応する女々しい人が多いので気をつけましょう。
0009名無しさん@お腹いっぱい。 NGNG
>>8
DBの話をしているのに、なんで女の話を持ち出すの?
00108 NGNG
>>9
荒れるともったいないので。
と思ったけど、よけい荒れちゃいそうだね。ごめんね。
さぁ、続けて下さい。
0011名無しさん@お腹いっぱい。 NGNG
陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部
陰部陰部陰部陰部陰部陰部●部陰部陰部陰部陰部陰部陰部
陰部陰部陰部陰部陰部陰部●部陰部陰部陰部陰部陰部陰部
陰部陰●陰部陰部陰部陰部●部陰部陰部陰部陰●陰部陰部
陰部陰部●部陰部陰●●●●●●●陰部陰部●部陰部陰部
陰部陰部陰●陰●●部陰部●部陰部●●陰●陰部陰部陰部
陰部陰部陰部●部陰部陰部●部陰部陰●陰部陰部陰部陰部
陰部陰部陰●陰部陰部陰部●部陰部陰部●部陰部陰部陰部
陰部陰部陰●陰部陰部●●●●●部陰部陰●陰部陰部陰部
陰部陰部●部陰部陰●陰部●部陰●陰部陰部●部陰部陰部
陰部陰部●部陰部●部陰部●部陰部●部陰部●部陰部陰部
陰部陰部●部陰●陰部陰部●部陰部陰●陰部●部陰部陰部
陰部陰●陰部陰●陰部陰部●部陰部陰●陰部陰●●●陰部
陰●●●陰部陰●陰部陰部●部陰部陰●陰部陰●陰部陰部
陰部陰部●部陰●陰部陰部●部陰部陰●部陰●部陰部陰部
陰部陰部●部陰部●部陰部●部陰部●陰部陰●部陰部陰部
陰部陰部●部陰部陰●陰部●部陰●部陰部陰●部陰部陰部
陰部陰部陰●陰部陰部●●●●●陰部陰部●陰部陰部陰部
陰部陰部陰●陰部陰部陰部●部陰部陰部陰●陰部陰部陰部
陰部陰部陰部●部陰部陰部●部陰部陰部●部陰部陰部陰部
陰部陰部陰●陰●●部陰部●部陰部●●陰●陰部陰部陰部
陰部陰部●部陰部陰●●●●●●●陰部陰部●部陰部陰部
陰部陰●陰部陰部陰部陰部●部陰部陰部陰部陰●陰部陰部
陰部陰部陰部陰部陰部陰部●部陰部陰部陰部陰部陰部陰部
陰部陰部陰部陰部陰部陰部●部陰部陰部陰部陰部陰部陰部
陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部陰部

0012名無しさん@お腹いっぱい。 NGNG
日本MySQLユーザ会
http://www.mysql.gr.jp/
0013名無しさん@お蝮いっぱい。 NGNG
MySQLユーザ会が何ヶ月か前に出した本をすごく期待して
買ったけど、なんかいまひとつでした。
「詳しくはマニュアル参照しろ」ばかりなんだもん。
だから今はマニュアル見てます。
0014名無しさん NGNG
最近買った本に「MySQLはデータを更新するユーザーが少ないところで
多くのデータを検索したい時にはベストの選択だが、多くのユーザーが
一度に登録を行うような場合は、他のRDBMSが向いてる」とありました。
2chのような掲示板をMySQLで作るのは向いてないのでしょうか?
0015名無しさん@お腹いっぱい。 NGNG
>>13
初心者むけだから...
>>14
ロックが弱いから...だがな、プログラマーの力量がそこで大きく試されるぞ。
0016名無しさん NGNG
例えばどういう点ですか?<力量
0017名無しさん@お腹いっぱい。 NGNG
工夫すればいいだけってこと。
あとは考えて。
0018名無しさん@お腹いっぱい。 NGNG
MySQLを./configureするときに、
変数のサイズをチェックするところでこけるんだけど、
対処法知らない?

ちなみに、同じ現象がIRIXとFreeBSDで発生した。
0019初期不良 NGNG
何でマンモス本にも日本語マニュアルとか
http://www.asakawa.ne.jp/doc/php/ja/sjis/ref.mysql.html
にも mysql_dbname() が載ってないの?
無いわけないだろうと思って検索かけてみて見つけたけど...
mysql_db_name() だったりして、まあどっちでも動くわけだけど
この辺ってどうなってるの?
0020電動ナナシ NGNG
PHP サイトがリニューアルしたね。ずいぶんすっきりした。

>>19
本家のページに出てないから仕方が無いんじゃない?
http://www.php.net/manual/en/ref.mysql.php
0021名無しさん@お腹いっぱい。 NGNG
>>16
わかりやすい一例ね。普通はさ
1.ロック
2.更新
3.アンロック
とやるわけでしょ。MySQLの場合は、このロックしてから放すまでの時間を最
小限に抑えないとダメ。あと、極力ロックしない努力も必要。
とりあえずロックしておけって方針だと、簡単に使い物にならなくなるよ
MySQLにはlast_insert_idとかreplaceとか、あるいはget_lockとかロック
しないための機能がいっぱいあるので、考えよう
002216 NGNG
PHP+MySQLを始めて間もないためよくわかりませんが
これまで明示的?なロックは使ったことがないです。
持ってる本には書いてなかったし。
last_insert_id、replace、get_lock を調べてみます。
002321 NGNG
>>16 >>22
おーい。だめじゃーん
MySQLはフツーのデータベースと違って明示的にロックしないと何もロックして
くれないよー

俺がさっき書いたget_lockとかは中級以上の知識だけれど、基本はちゃんと抑え
ないとダメ
基本はあくまで、更新されちゃ困るレコードはロックすることだよ。
MySQLの実際のロックはlock tablesで行うので、こいつを勉強しよう。
get_lockとは名前は似てても全然違うので注意。

それで、ロック中の処理をできるだけ短くするように心がけよう。よほど
アクセスの多い場合でなければ、これで対応できるはず。
002416 NGNG
ありがとうございます。
これまで、insert や update などがそれほどないものしか作った
ことがなかったので、偶然うまくいってただけだったようですね。
このままいってたら今後やばかったです。
勉強になりました。
0025名無しさん@お腹いっぱい。 NGNG
>>23
>俺がさっき書いたget_lockとかは中級以上の知識だけれど、基本はちゃんと抑え
>ないとダメ

別に煽るわけではないが、
ロックの知識なんて、基礎中の基礎だと思うが...
0026初期不良 NGNG
lock tables だとタイムアウト無しで延々と待つらしいけど
これが問題なのか?俺も MySQL 使い始めなり
0027初期不良 NGNG
って書いちゃったけどとりあえずこれ読みます
http://www.softagency.co.jp/mysql/Manual/html/manual.ja_Performance.html#Table_locking
002816 NGNG
>ロックの知識なんて、基礎中の基礎だと思うが...

本に載ってたサンプルとかしか見てなかったわけです。
で、ロックなんて書いてなかったので、MySQLがロックしてくれるんだ
と勝手に思ってました。
とりあえず、lock tables xxx write;と
unlock tables;入れて確認してます。
間にsleep()してテストしてますが、いいんですよね。
私もマニュアルちゃんと読もうかと思います。
ためになる煽りは歓迎です。よろしゅう。
002921 NGNG
>>25
そうなんだけれど、それを知らずに作っちまう奴もいる。俺が前に
あるサイトの運用を引き継いだときに、まるでロックのこと意識し
てないつくりになってて、データの不整合がおきまくりで、空いた
口が塞がらなかった。

>>26
問題としては、テーブルごとロックしか出来ないっていうのが第一
の問題。一人のユーザしか更新できないでしょ。
第二の問題がタイムアウトできないことだね。
mysql_pconnect()で接続して、ロックしている間に落ちるよう
なプログラムを書くとロックしっぱなし・・・これはPHP3の話だ
けどね。PHP4は使ってないのでわかんない
0030電動ナナシ NGNG
>>29
ロックがタイムアウトしないのか・・・そりゃひどいねえ。

マニュアル読むと、
・接続が閉じられるか、当該プロセスが Lock を発行しない限り Lock は有効
・他のプロセスの Lock 要求はタイムアウトなしで待たされる
みたいだね。ううむ。

プログラムが落ちて httpd も一緒に落ちていれば問題ないけど、そうじゃない
場合(エラーによる異常終了)とかは問題だよねえ。

当面の回避策としては、
・pConnect は使わない
・適当な(アプリケーションから使わない)テーブルをいくつか用意して、
 スクリプトの先頭で lock/unlock する(そうすれば直前のロックが解除される)
 # httpd のプロセス数だけテーブルを用意して、互いに lock するテーブルが
  重ならないようにランダムに割り当てる
という感じになるのかな。
0031名無しさん@お腹いっぱい。 NGNG
get_lock()はタイムアウトを設定できるよ
ただ、こいつは別にデータそのものをロックするわけじゃないという曲者
「こういうデータを更新するときには、こういう文字列でget_lock()を
かける」とかって、明確なルールを作る。
頻繁にかかる更新はget_lock()で、そうでない更新はlock tablesでなん
ていうのも面白いと思う
0032名無しさん NGNG
いまいちイメージが湧かないのですが、頻繁に更新するようなものって
例えばどのようなものがありますか?
サイトの例などあります?
0033名無しさん@お腹いっぱい。 NGNG
lock を使わなければいいのですよ。
これの本当の意味がわかる奴は少数だと思うけども、
わからない奴は1週間くらいじっくり考えてみな。
それでもわからない奴は、オラクル使った方がいいよ。金かかるけど。
0034名無しさん@お腹いっぱい。 NGNG
ヒントおくれ。
0035名無しさん@お腹いっぱい。 NGNG
ヒント1:ロックすると遅い
■ このスレッドは過去ログ倉庫に格納されています