バグ報告 > 管理機能 > 仕様バグ? |
管理機能
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
abeabe01 |
投稿日時: 2009/2/20 18:06
対応状況: −−−
|
新米 登録日: 2009/2/20 居住地: 投稿: 3 |
Re: 仕様バグ? お世話様です。
PHPからのトランザクションの動作を少し検証してみました。 トランザクション自体が、CSVでアップロードされたデータを 処理するループの外にかかっているため、 LC_Page_Admin_Products_UploadCSV_Ex.phpの // 実行時間を制限しない set_time_limit(0); の設定によるのか、トランザクションブロックの内側で タイムアウトや強制終了する様な状況になると データがコミットされてしますのではないでしょうか? CSVでの登録は、 「IDを指定しない新規登録」 「IDを指定した更新」 のいずれかで処理している様に思われますので、 トランザクションの中で落ちた場合に、 データが中途半端に登録されるので、 落ちるタイミングによっては変なデータが残ってしまうの かと思われます。 パフォーマンスは落ちますが、 現状では、CSVデータの1件毎に トランザクションをかける方が良いのではないでしょうか? また、 LC_Page_Admin_Products_UploadCSV_Ex.phpの // 行カウント if($line <= 1) { continue; } は、$line < 1 としないと、 CSVで1件のデータは登録できないように思われますが... 思いつく登録時の流れ(対応)としては、 1、商品1件のスキーマ毎にトランザクションをかける 2、登録できたデータと登録できなかったデータを振り分けて ログを吐き出す。 3、タイムアウトが起きない様に一定件数でクライアント (ブラウザ)を介す様にする。 4、IDの指定が無い場合は、ID自動発行で新規登録する。 IDの指定がある場合は、該当データのある場合は更新 IDの指定がある場合で、該当データの無い場合は新規登録 このくらいのパターンがあれば、登録時の問題はいくらか 解消されるのではないかと思います。 後は、データベースの最適化でしょうか? これまでの経験ですと、スクリプトなどのコーディングで データベースエンジンをラッピングしようとすると大変な ので、ストアドを介す様にして、ストアドの名前をなるべ くそろえて、可能な限りデータベース側でラッピングした 方がスムーズの様です。 データベースの方言や拡張関数等もある程度ストアドで 吸収することも可能です。 時間が取れれば、開発に参加してみたいとも思います。 ご検討ください。 |
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
仕様バグ? | abeabe01 | 2009/2/20 6:46 |
Re: 仕様バグ? | nanasess | 2009/2/20 9:57 |
» Re: 仕様バグ? | abeabe01 | 2009/2/20 18:06 |
Re: 仕様バグ? | nanasess | 2009/2/20 18:26 |
Re: 仕様バグ? | seasoft | 2009/2/20 20:09 |
Re: 仕様バグ? | abeabe01 | 2009/2/20 21:04 |
Re: 仕様バグ? | seasoft | 2009/2/27 18:24 |
Re: 仕様バグ? | seasoft | 2009/2/20 10:43 |