PHPとMySQLを使用して、受注システムを設計し運営しているのですが、
たまに登録漏れが発生してしまいます。
多数の端末から同時にアクセス、使用された際に頻繁に起こります。
解決策のご教授をいただけますと幸いです。
###受注システムの流れ
①受注フォームから必要事項(名前、メールアドレス)を入力して送信する
②PHPとMySQLで入力チェックと登録を行う(PDOでinsert)
テーブルは下記の通りです。
id(int) | name(varchar) | mailaddress(varchar) | comment(text)
※ 「id」は受注管理番号(主キー)とし、
登録をするときに「auto_increment」で重複しないように生成しています。
③登録完了後に、入力されたメールアドレスへ登録完了のメールを送る
###問題
多数の端末から同時使用した際に、データベースへの登録漏れが発生してしまいます。 データベースへの登録漏れが発生しても③のメール送信は問題なく実行されています。 登録完了を知らせるメールで受注管理番号(id)を記載しているのですが、 その受注管理番号(id)が重複していた(同じ番号が使われていた)ため問題が発覚しました。 AさんとBさんが同じタイミングで別々の違う端末から登録をこなうと、 Bさんしか登録されず、Aさんが登録漏れしてしまうという症状です。 メールでは、それぞれ ・Aさんのメール 受注番号:00001 名前:Aさん メールアドレス:name_a@yahoo.co.jp コメント:・・・ ・Bさんのメール 受注番号:00001 名前:Bさん メールアドレス:name_b@yahoo.co.jp コメント:・・・ となります。
本当にシンプルなシステムですので、記載したこと以外の処理は行っていません。
登録のタイミングが同じだと「auto_increment」による生成で同じ番号が発行され、
どちらかの登録処理が無効になることがあるのでしょうか?
本当に困っておりますので、ご教授いただけますと幸いです。
よろしくお願い致します。
###補足情報
レンタルサーバー: heteml(ヘテムル)
PHPバージョン: 5.4
・登録処理は「PDO」
・メール送信は「mb_send_mail」
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/06/08 02:33
2016/06/08 02:42