PHPでDBを使わずに、注文番号の管理をしたいと先方に言われたので、
カウンターを作って、ゼロ埋めして返すFunctionを作成しました。
引数には、カウンタのファイル名と桁数を入力すると、
返り値に注文番号を返します。
■実行
$order_no = $this->counter(dirname($_SERVER['DOCUMENT_ROOT']).'/approot/count.txt',6);
■関数
/*
* @access public
* @param String $filename カウンタファイル保存先
* @param Int $sprintf 桁数を統一
*/
public function counter($filename,$sprintf = 1){
//ファイルがなかったら作成する
if (!file_exists($filename)) {
touch( $filename );
chmod( $filename, 0777 );
}
$fp = @fopen($filename,"r+") or die("ファイルが開けません");
flock($fp, LOCK_EX);
$count = fgets($fp, 64);
if( (int)$count === 0 ){
//ファイルがない場合のデフォルトは1
$count = 1;
}else{
//数値が取得できたら連番をつける
$count++;
}
rewind($fp);
fputs($fp, $count);
fclose($fp);
return sprintf('%0'.$sprintf.'d', $count);
}