当社のウェブサイトには、サービスの登録フォームがあります。そのフォームには、インクリメントし続ける一意の参照番号が必要です。たとえば、FM00001、FM00002などです。
PHPでこれをどのように実現できますか。送信が成功するとインクリメントされ、後で新しいフォームのために取得できるグローバル変数を保存する方法はありますか。
PHPでこれを行うにはいくつかの方法があります...
データベースを実行している場合は、自動インクリメントフィールドを備えたテーブルが最も簡単です。
もう1つのオプションは、ファイルロックを使用して、ローカルファイルの読み取り/書き込みを行うことです。ファイルロックはNFS
マウントでは機能しないため、多くの一般的な共有ホスティング設定では失敗することに注意してください。
NFS
ディレクトリエントリの作成と削除を含むロックの回避策があります...
うーん..順番にインクリメントする必要がありますか、それとも古い番号よりも大きい次の番号で十分ですか?ホスティング設定によっては、現在のタイムスタンプを取得し、それを一意のIDとして使用できる場合があります。
番号をデータベースに保存してから、インクリメントします。または、より簡単にテキストファイルを使用します。
テキストファイルは次の方法で実行できます。
//read
$f = @fopen("count.txt","r");
if(!$f) die ("File could not be opened");
$count = fgets($f,9);
fclose($f);
$count++;
//write
$f = @fopen("count.txt","w");
if(!$f) die ("File could not be written");
fwrite($f,$count);
fclose($f);