來做一個訂單號碼取號機

【人】 常常自以為是的認為這個站人不多啦,隨便處理就好;可以用就好了;過關就好了。實務上就遇到了,雖說做過不少流量大的站,但是還是會走不出既有思維。取號的方法很多,隨便就可以說好幾種做法。

Thank you for reading this post, don't forget to subscribe!
  • 在成立訂單之後再取號
  • 跟資料庫要一組唯一的號碼
  • 寫在readis

這裡就用一個檔案來存目前的流水號,主要是用日期六碼在前面,後面帶四位數的流水號,這樣一天就有9999張訂單了,不夠的再加位數。大致的流程就這樣,備份一下吧。

/**
 * [getNewAgreementNo 訂單號碼取號機]
 * @return  [type]     [description]
 * @Another Angus
 * @date    2022-06-25
 */
function getNewAgreementNo() {
	$todayNo = date( 'Ymd') ;

	$nowSN = config('serial_number') ;
	if ( !($nowSN) || strpos( $nowSN['agreement_no'], $todayNo) > -1) {
		$atLastNo = (int)str_replace($todayNo, "", $nowSN['agreement_no']) + 1 ;
		$nowSN['agreement_no'] = $todayNo.str_pad($atLastNo, 4,'0', STR_PAD_LEFT) ;
	} else {
		$atLastNo = 1 ;
		$nowSN['agreement_no'] = $todayNo.str_pad($atLastNo, 4,'0', STR_PAD_LEFT) ;
	}
	mac_arr2file( DIR_EXTRA."serial_number.php", $nowSN) ;

	return $nowSN['agreement_no'] ;
}

執行結果

$AgreementNo = getNewAgreementNo();
echo $AgreementNo ;
202206250006