ラベル これはひどい の投稿を表示しています。 すべての投稿を表示
ラベル これはひどい の投稿を表示しています。 すべての投稿を表示

2007年6月10日日曜日

@ITのネタ記事キター!



さぁ、君はいくつ穴を見つけたかな?


http://www.atmarkit.co.jp/flinux/rensai/mysql5_07/mysql5_07a.html





でもDAOつかっていて、addslashがその外側で呼び出す必要があるって。。すげぇ仕様。


そもそもaddslashじゃなくて各バックエンドDBにあわせたエスケープ処理が必要で、


そのためにも、DAOで隠蔽するんじゃないの?普通。


あと出力時のエスケープもぬけてるから、いやげだよね。





2007年5月16日水曜日

まちがったPHP講座 flockについて



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が事実上シングルタスクでしか走らなくなので、


マルチタスクなプログラムを書けない人でも多少安心。














って皮肉ですよ~(たぶん)。