さぁ、君はいくつ穴を見つけたかな?
http://www.atmarkit.co.jp/flinux/rensai/mysql5_07/mysql5_07a.html
でもDAOつかっていて、addslashがその外側で呼び出す必要があるって。。すげぇ仕様。
そもそもaddslashじゃなくて各バックエンドDBにあわせたエスケープ処理が必要で、
そのためにも、DAOで隠蔽するんじゃないの?普通。
あと出力時のエスケープもぬけてるから、いやげだよね。
さぁ、君はいくつ穴を見つけたかな?
http://www.atmarkit.co.jp/flinux/rensai/mysql5_07/mysql5_07a.html
でもDAOつかっていて、addslashがその外側で呼び出す必要があるって。。すげぇ仕様。
そもそもaddslashじゃなくて各バックエンドDBにあわせたエスケープ処理が必要で、
そのためにも、DAOで隠蔽するんじゃないの?普通。
あと出力時のエスケープもぬけてるから、いやげだよね。
http://www.phppro.jp/school/phpschool/vol27/2
いやぁ、勘違いしているようだ。。。
LOCK_SHすればwrite関数が実行できなくなるのと勘違いしてるのかな?
まぁ、それをLOCK_EXになおしてもflushしわすれてるので、綺麗にロックはかからない。
どーせ君らにロックの正しい理解は無理だ。
ロックはロックファイルを別につくってそれをLOCK_EXでロックしよう。
と最近おもいだした。。。。
だったらひたすらコピペで十分ミスしないから。
同時アクセスが多いときのスループットは最悪に悪いけどま、OKしょや
なので、スクリプトの先頭に以下をたして。
/*基本的にはデータを弄るスクリプトの最初でロック*/
$lfp=fopen("/some/where/lockfile","w");//ロックファイルは絶対パスで指定すること
if($lfp){エラー処理(スクリプトをちゃんと中断すること)}
if(! flock($lfp,LOCK_EX)){エラー処理(スクリプトをちゃんと中断すること)}
スクリプトの最後にこれを足す。
/*データを弄るPHPスクリプトの最後にアンロック*/
fclose($lfp);//ここでロック終了
適当にクラスをつくってコンストラクタでロックして、デストラクタでcloseして
そのインスタンスをPHPのauto prepend機能をつかって自動的によぶといいかも。
そうすればPHPが事実上シングルタスクでしか走らなくなので、
マルチタスクなプログラムを書けない人でも多少安心。
って皮肉ですよ~(たぶん)。