09/10/2018, 17:56
Lỗi truy xuất đồng bộ ở ASP
Tôi có một website về Dịch vụ Tuyển dụng trên mạng, bây giờ nó có một lỗi này:
Khi Công ty A đăng ký xong, thì lúc nhập vào công việc X cần tuyển dụng, thì tên công việc đó lại thuộc về một công ty B khác, tương tự một công việc Y của công ty C, lại thuộc về công ty A.
Trường hợp này rất ít xảy ra, tôi nghĩ là do cả ba người cùng đăng ký một lúc, rồi lỗi xảy ra.
Vậy tôi phải qiải quyết vấn đề này như thế nào?
Language: ASP
Database: Access
Xin cám ơn
Khi Công ty A đăng ký xong, thì lúc nhập vào công việc X cần tuyển dụng, thì tên công việc đó lại thuộc về một công ty B khác, tương tự một công việc Y của công ty C, lại thuộc về công ty A.
Trường hợp này rất ít xảy ra, tôi nghĩ là do cả ba người cùng đăng ký một lúc, rồi lỗi xảy ra.
Vậy tôi phải qiải quyết vấn đề này như thế nào?
Language: ASP
Database: Access
Xin cám ơn
Bài liên quan
Tôi có một website về Dịch vụ Tuyển dụng trên mạng, bây giờ nó có một lỗi này:
Khi Công ty A đăng ký xong, thì lúc nhập vào công việc X cần tuyển dụng, thì tên công việc đó lại thuộc về một công ty B khác, tương tự một công việc Y của công ty C, lại thuộc về công ty A.
Trường hợp này rất ít xảy ra, tôi nghĩ là do cả ba người cùng đăng ký một lúc, rồi lỗi xảy ra.
Vậy tôi phải qiải quyết vấn đề này như thế nào?
Language: ASP
Database: Access
Xin cám ơn
Xin cám ơn các cao thủ
Cho tôi hỏi thêm một tí:
Nếu trong trường hợp khác (ứng dụng web khác), tôi chỉ sử dụng một record và nếu nhiều người cùng đồng thời truy cập record đó thì tôi phải xử lý đồng bộ thế nào? Nên dùng database nào? Và giải thuật thế nào?
Xin cám ơn
Nếu là Access thì nói chung không cần quan tâm vì nó là single.
Nếu là các hệ multi thì nói chung, để đảm bào tính toàn vẹn, bạn nên tạo các transaction trước khi thay đổi (cẩn thận thì cả truy xuất).
Chi tiết bạn nên coi trong sách thì sẽ có giải thích rõ ràng (cả dài nữa
A va B connection vô database để
A: update field1=valueA, field2=valueA+2 (không pha?i trên một lê.nh update sql statement).
B: update field1=valueB.
Nếu không làm đúng thì có thể xảy ra trường hợp lệnh 1 cu?a A, lê.nh 1 cu?a B, lệnh 2 của A -> kết quả sẽ là field1=valueB, field2=valueB+2 (PT nói đây là nói theo lý thuyết có trường hợp này xảy ra). Ðó là 1 table, nếu edit 2 tables thì phải dùng transaction để bảo đảm một table vì lý do gì đó không fails thì roll back lại tất cả các tables đã updated.
Còn mô.t trường hợp khác phải lưu ý trong ASP:
nếu nói đơn giản là chỉ có một record thôi . Có hai người log vô để update cùng lúc . Giả sử cả hai đều update field1.
dùng ASP. cả hai log vô, get data, close connection . Như vậy cả hai đều có record đó với field1 = "$12.00".
A muốn gia?m giá bán hàng xuống $1.00 để bán giá $11.00 thì vẫn còn có lời. Trong lúc A đang edit value (trong form). thì B submit lệnh sửa đổi giá bán xuống còn "$11.00". A submit lê.nh "update field2 - 1" -> kết qua? ra là bán gía $9.00.
Chú ý các trường hợp có thể xảy ra .
Về lý thuyết , ta sẽ xử lý trường hợp này bằng miền găng (critical section). Tôi chỉ biết vậy thôi...hihi, các bạn có thể xem thêm trong sách HĐH Nâng cao của cô Trần Hạnh Nhi (ĐH Khoa học tự nhiên) để hiểu rõ hơn.
Rất mong các bạn chỉ giáo thêm