2009年3月25日水曜日

死んだあとのPHPテスター

簡易負荷テスト用コード
min から max まで時間あけて接続します。
使いようによってはダウンローダーみたいにもいけるかと。

function microtime_float(){
list ($msec, $sec) = explode(' ', microtime());
$microtime = (float)$msec + (float)$sec;
return $microtime;
}
function gettest(){
$res = "";
if( empty($_REQUEST['min'] )
||empty($_REQUEST['max'])
||empty($_REQUEST['wait'])
||empty($_REQUEST['max_time'])){
return $res;
}
$min = (int)$_REQUEST['min'];
$max = (int)$_REQUEST['max'];
$wait = (int)$_REQUEST['wait']*1000;
$max_time = (int)$_REQUEST['max_time'];
$end_microtime =microtime_float()+$max_time;
set_time_limit( $max_time+10 );

for($i=$min;$i<=$max;$i++){
$folder_num = sprintf("%04d",ceil($min/1000));
$dirname = "./res/".$folder_num;
if(!is_dir($dirname)){
mkdir($dirname);
}
$filename=$dirname."/".$min.".html";
if(file_exists($filename)){
$min++;
$res = $min;
continue;
}
$testurl="$_REQUEST['URL']".
"$_REQUEST['URI']".$min;
$html =file_get_contents($testurl);
if(!$html){
sleep(10);
if(microtime_float()>$end_microtime || $min>=$max){
break;
}
continu;
}
$pattern = '適当な正規表現';
$matches = array();
preg_match($pattern,$html,$matches);
if(!empty($matches[1])){
$data = $matches[1];
$fp = fopen($filename, 'w');
if ($fp){
if (flock($fp, LOCK_EX)){
if (fwrite($fp, $data) === FALSE){
return $res;
}
flock($fp, LOCK_UN);
}
}
fclose($fp);
}
$min++;
$res = $min;
if(microtime_float()>$end_microtime || $min>=$max){
break;
}
usleep($wait);
}
return $res;
}
$next =gettest();
$next_max = ((int)$_REQUEST['max']>$next)?($_REQUEST['max']):($next);

?>

2009年3月17日火曜日

プログラムを速くしようとしたり軽くしようとしたりしてはいけない

本当らしいです。
徹夜でやってくれないかという話がチームに降りかかったのですが、
即効で、無理でしょと突っぱねたら立場的に暗雲がかかりました。
請け負ったら、多分責任問題一直線なので似たようなものだろうけど。

2009年3月10日火曜日

システム屋の24時間体制?

巻き込まれた。

正直乗り切る自信がない。
きっと、これは検察の陰謀だ。

2009年3月5日木曜日

ファイルを比較してバックアップとコマンド実行

一定時間ごとに設定ファイルを監視してリロードとかに便利
echo以降に好きなコマンドいれてみてください。

vi backup.sh ↓新規作成

#!/bin/sh
ORIGDIR=/etc/
BACKDIR=/backup/etc/
DATE=`/bin/date '+%Y%m%d%H%M'`


for i in test1 test2
do
if /bin/test $ORIGDIR/$i -nt $BACKDIR/$i
then
cp -p $ORIGDIR/$i $BACKDIR/$i
cp -p $ORIGDIR/$i $BACKDIR/$i.$DATE
echo "detected $ORIGDIR/$i is updated."
fi
done

chmod 700 backup.sh
一日ごとの実行なら
echo "0 5 * * * root /root/backup.sh" > /etc/cron.d/backup
一時間ごとの実行なら
echo "0 * * * * root /root/backup.sh" > /etc/cron.d/backup

ディレクトリとかは、適当に置き換えてください。

2009年3月3日火曜日

反日と話題の映画「オーストラリア」

ほとんど似たレビューをYAHOOにもかいてます。
http://info.movies.yahoo.co.jp/userreview/tyem/id331364/rid274/p1/s0/c1/

*問題のシーン
島に上陸する日本軍。推測するに最初の爆撃のあった1942年2月19日前後と思われる
史実:ダーヴィンと同時にメルヴィル島に大規模な空襲が行われる。不時着した日本人兵が捕虜にされた事実はあり。
映画;メルヴィル島にすでに上陸した日本人によって主人公達を逃がすため囮となったアポリジニが撃たれる。
史実と違うのは主人公のおっさんが、島に残された混血児を南に非難させるシーンに臨場感をもたせるために作ってるので日本が嫌いだからじゃないと思うよ。反日扱いはあんまりだと思う。
*感想
それなりにいい話だとおもうけど、1500円の価値あるかなぁ。と思うと微妙。
日本人には分かりにくい話も多いし。
というか、宣伝でもやってる根本的なテーマである差別の偏見なんて持たない白人の愛情とかって、日本人には見ても面白くないと思う。少なくとも俺は面白くなかった。