テーブルと例とさくらさん
*このエントリは、ブログペットのココロが書いてます♪
テーブルと例とさくらさん
*このエントリは、ブログペットのココロが書いてます♪
空を見るとマタニティのことを思い出します……
*このエントリは、ブログペットのココロが書いてます♪
だいぶ前にロプローから MySQL データベースのコネクションの生存期間について聞かれてたんですが、返事するの忘れてたので今頃ブログ書いてます。どっちかって言うと忘れてたというよりは、手元の環境で問題が再現できないので放置してた感じですがw
まず MySQL コネクションはデフォルト 8 時間でタイムアウトします。
関係しているシステムパラメータは wait_timeout か interactive_timeout のいずれかです。CGI の場合は通常 wait_timeout が関係します。詳細は http://dev.mysql.com/doc/refman/5.1/ja/server-system-variables.html をご覧ください。
システムパラメータの確認は SHOW VARIABLES コマンドで行えます。以下はポックン家のテスト用環境の値です。
mysql> SHOW VARIABLES LIKE '%_timeout'; +----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | connect_timeout | 10 | | delayed_insert_timeout | 300 | | innodb_lock_wait_timeout | 50 | | innodb_rollback_on_timeout | OFF | | interactive_timeout | 28800 | | net_read_timeout | 30 | | net_write_timeout | 60 | | slave_net_timeout | 3600 | | table_lock_wait_timeout | 50 | | wait_timeout | 28800 | +----------------------------+-------+ 10 rows in set (0.00 sec)
28800 秒なので 8 時間です。
元々聞かれていたのは、「CGI プロセスをkill した際にデータベースコネクションが残ったままになることがあるか?」というような内容だったのですが、以下の手順で似たような現象を確認できます。(MySQL 5.0.67)
ロック待ちのまま残ったコネクションは、1. のテーブルのロックが解除されると切断されます。ロック待ちのコネクションが切断されるまでの間、各コネクションはサーバのコネクションプールを消費します。従って、2. と同じ処理を行うプロセスが増えるとすべてロック待ちとなり、最終的に max_connections を越えるとデータベースに接続できなくなります。
他の原因により同様の事象が発生するかを確認してませんのでもうちょっと調べた方が良いような気もしますが、kill してもコネクションが残る状態自体は発生し得るようでしたのでとりあえずご報告ということで。(テーブルのロックは LOCK TABLE WRITE コマンドで発生させたのですが、MyISAM を使用している場合、テーブルロックを長時間持続させることはレアケースだとと思いますので、もうちょっと一般的な状況で発生させる方法が無いか調べた方が良いという感じです。)
ちなみに MySQL の接続中のコネクションは SHOW PROCESSLIST コマンドで、ロック中のテーブルは SHOW OPEN TABLES コマンドで確認できます。
個人的には完全に乗り損ねちゃった話題なのですが、今日行われた UCC (上島珈琲) の Twitter でのキャンペーンが炎上してました。無差別に @ を送るものだったようです。
ってところまでは皆さんだいたいご存知かと思いますが、ν速+にもスレが立ってたようですのでなんとなくまとめてみました。
1 :名無しさんφ ★:2010/02/05(金) 18:46:51 ID:???0 ?2BP(101)
コーヒー会社のUCC上島珈琲が『Twitter』で公式アカウントを作り、多くのユーザーにPRメッセージを
送信。『Twitter』運営にスパム認定されるという騒動が起きた。UCCは次の2つの迷惑行為を認めている。
・了承を得ていないユーザー様に対して、自動的に宣伝メッセージを送付したこと
・bot が複数あることによって、同一文面を送り続けるという『Twitter』の規約に違反したこと
※UCC公式サイトより引用
多数のユーザーがUCCのスパムメッセージに不快感を示している。この件に関してUCCは重く受け止め以下
の謝罪文を公開している。
平素はUCC製品に格別のご愛顧を賜り厚くお礼申し上げます。
この度、「UCC Good Coffee Smile キャンペーン:コーヒーストーリー(エッセイ)コー
ヒーアート作品募集!」の開始にあたり、Twitter を使用したPR活動を実施したところ、
多くのTwitter ユーザー様に弊社から同キャンペーンの告知が大量に送付されていること
が判明致しました。ご迷惑をおかけしました皆様に深くお詫び申し上げます。
弊社といたしましては、今後二度とこのような事態が生じないよう情報発信には細心の
注意を払い、再発防止に万全を期す所存でございます。
※UCC公式サイトより引用
なかには複数の同内容メッセージが届いたユーザーもいるようで怒り心頭だ。まさか一流企業がスパムメッセー
ジを送信するはずがないと考え、UCCの偽者が送信していると勘違いしていた人もいた。企業が『Twitter』に
登録してユーザーとコミュニケーションをとることは珍しくない。ほとんどの企業がフレンドリーな書き込み
をしているため反感を買うことは少ないのだが……。今回は違ったようだ。
http://news.livedoor.com/article/detail/4589946/
3 :名無しさん@十周年:2010/02/05(金) 18:48:40 ID:f+ac6xlw0
ウッシッシー
11 :名無しさん@十周年:2010/02/05(金) 18:51:26 ID:gLEXst2/P
一流企業なのか?UCC
12 :名無しさん@十周年:2010/02/05(金) 18:51:41 ID:KMcCFW3k0
UCCファンにとってこれは苦い思い出になるだろうな
20 :名無しさん@十周年:2010/02/05(金) 18:53:47 ID:Y85wNNrN0
上島ぁぁぁ!!!
26 :名無しさん@十周年:2010/02/05(金) 18:56:04 ID:RF8TzlQJ0
>>12
コーヒーだけにってか
30 :名無しさん@十周年:2010/02/05(金) 18:58:35 ID:oH9s6CYF0
>>26
ちゃんとつっこんであげるなんて
豆なヤツだな
41 :名無しさん@十周年:2010/02/05(金) 19:04:56 ID:RF8TzlQJ0
>>30
そういうの見逃すことできなくてな・・・
・・・ってお前モカ!
48 :名無しさん@十周年:2010/02/05(金) 19:07:16 ID:Ym0ITf3D0
>>41
おやおや、みなさんおジョーンズで。
54 :名無しさん@十周年:2010/02/05(金) 19:10:37 ID:bfSwHf/r0
誰か「おい、twitterでスパムながせよ」
上島「嫌だよ。いつも俺ばっかり」
誰か「わかったよ、じゃ俺が流すよ」
別人「それじゃダメだ。俺が流すから」
誰か「いやいや、先ずは俺から流すよ」
別人「それじゃ流したい人、手を挙げて」
上島「はい!」
誰かと別人「どうぞどうぞ」
56 :名無しさん@十周年:2010/02/05(金) 19:11:26 ID:kR1/cjdk0
なんかもの凄くオッサン臭いスレだな(´・ω・)ダジャレレンパツ
59 :名無しさん@十周年:2010/02/05(金) 19:12:54 ID:S9FIrq5A0
スパム送るなよ、送るなよ
、、、絶対送るなよ
62 :名無しさん@十周年:2010/02/05(金) 19:16:04 ID:SjzPhrUX0
>>41
それはどりっぱな心構えですなぁ
70 :名無しさん@十周年:2010/02/05(金) 19:28:24 ID:fKGkeMmS0
>>62
お前らその辺にしておコナ
75 :名無しさん@十周年:2010/02/05(金) 19:33:03 ID:kR1/cjdk0
やめてもうだじゃれはやめて
80 :名無しさん@十周年:2010/02/05(金) 19:55:12 ID:r25YMbpK0
北海道にはユーコーヒー (上島コーヒー) がある。
これ豆な
107 :名無しさん@十周年:2010/02/05(金) 21:02:59 ID:4bxUBuke0
UCC 上右右 視力2.0です
114 :名無しさん@十周年:2010/02/05(金) 21:32:36 ID:jz9T3+oe0
コーヒーギフトは〜♪
125 :名無しさん@十周年:2010/02/05(金) 22:21:38 ID:PCROxN1l0
>>11
東のロックフェラー 西のUCCと呼ばれている
128 :名無しさん@十周年:2010/02/06(土) 00:00:11 ID:+PBm6sxX0
はい、名古屋の某広告代理店フラグ。
某サイトにて、type=”text” の input 要素を、こんな感じで jQuery を使って無効にしていたのですが、
function disable_enter(e) {
if (e.which == 13) {
return false;
}
return true;
}
$(function() {
$('.noEnter').keypress(disable_enter);
});
同じ機能を他でも使うことになって、いちいち keypress(disable_enter) 呼び出すのもうっとおしいなと思って、試しに jQuery プラグインにしてみたところ、応用範囲が超スゲー感じだったのでお伝えしたいと思います。
とりま上のをプラグインにするとこんな感じ。
(function($) {
$.fn.extend({
disableEnter: function() {
this.keypress(function(e) {
return (e.which != 13);
});
}
});
})(jQuery);
$(function() {
$('.noEnter').disableEnter();
});
呼び出し側のコードが、超簡単になったのがお分かり頂けるでしょうか?
jQuery プラグインの作り方は、プラグイン関数をメンバに持つオブジェクトを引数に渡すだけです。プラグイン関数内では、this は呼び出しに使用された jQuery オブジェクト(上の例なら $(‘.noEnter’) が返すオブジェクト)になってますので、元々 jQuery 用に書かれたコードならだいたいそのまま動きます。
元のコードでは「disable_enter を keypress イベントハンドラにセットするとエンター入力でフォームがサブミットされなくなります」という感じで、処理の概要の説明が若干まだるっこしいですが、プラグインにすると「disablEnter() を呼び出すとエンター入力でフォームがサブミットされなくなります」とう感じで、超スッキリします。
ちなみに $.fn.extend ではなく $.extend を使用すると、jQuery そのものの機能を拡張できるのですが、今日はメンドイので説明省略w
jQuery にはプラグインディレクトリ もありますので(たぶんエンターを無効にするプラグインはここにありそうw)、これ超イケテルプラグインができたらうpしたら良いと思うのですが、それほど大したものじゃなくても、jQuery の処理をプラグインにしてパッケージングしておくと再利用性がぐーんと広がるような気がします。
ぜひお試しあれw