Pobranie indeksu przez kilka osób jednocześnie |
Pobranie indeksu przez kilka osób jednocześnie |
19.06.2018, 22:00:37
Post
#1
|
|
Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 30.04.2016 Ostrzeżenie: (0%) |
Witam,
tworzę sklep internetowy który ma działać 100% bez obsługi czyli płatności tylko elektroniczne. Pisząc, wpadłem na myśl co się stanie jeśli powiedzmy 10 osób na raz złoży zamówienie w tym samym czasie i z bazy danych zostanie pobrany kolejny numer id zamówienia. Czy może wystąpić błąd w postaci pobrania tego samego id przez 2 osoby jeśli złożyły by zamówienie dokładnie w tej samej milisekundzie czy tam najmniejszej jednostce czasu jaką obsługuje sql? Powinienem jakoś się przed tym zabezpieczyć? Pozdrawiam |
|
|
19.06.2018, 23:22:46
Post
#2
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 46 Dołączył: 10.01.2016 Ostrzeżenie: (0%) |
Moim zdaniem nie masz się czego obawiać. Jeśli REQUEST'y będą takie same, to server np. Apache zostawi je w kolejce do wykonania (skolejkuje je). O ile się nie mylę. W dokumentacji jest podane ile domyślnie na raz wykona REQUEST'ów server, ale ile skolejkuje w razie potrzeby.
http://httpd.apache.org/docs/2.2/mod/mpm_c...html#maxclients Cytat The MaxClients directive sets the limit on the number of simultaneous requests that will be served. Any connection attempts over the MaxClients limit will normally be queued, up to a number based on the ListenBacklog directive. Once a child process is freed at the end of a different request, the connection will then be serviced. https://serverfault.com/questions/277664/re...request-queuing W najnowszej wersji masz to: http://httpd.apache.org/docs/2.4/mod/mpm_c...xRequestWorkers Jeśli chcesz się tym pobawić musisz zajrzeć do plików konfiguracyjnych i to pozmieniać, chociaż lepiej żebyś tego nie robił, jeśli nie wiedziałbyś co robisz. https://serverfault.com/questions/105908/ho...mit-wamp/105952 https://httpd.apache.org/docs/2.4/mod/mpm_winnt.html https://serverfault.com/questions/796968/ap...ent-users-limit Moim zdaniem tym czym powinieneś się przejąć to: - miejsce na dysku - errors w server'ze - errors w systemie - etc.. Chodzi oto, że gdyby Ci zabrakło miejsca na dysku, czy coś w tym stylu, to server nie miałby gdzie pomieścić danych i Twój WebServer (strona internetowa) pewnie źle by działała, a możliwe, że doszłoby do jakiego crash'u. Poczytaj o wątkach jak działają i w jaki sposób wykonują czynności związane ze sprzętem. https://httpd.apache.org/docs/2.4/misc/perf-tuning.html https://wiki.mikejung.biz/Apache https://httpd.apache.org/docs/2.4/mpm.html Chodzi Ci chyba o ten plik konfiguracyjny: Apache\conf\extra\httpd-mpm.conf Ten post edytował Neutral 19.06.2018, 23:54:07 |
|
|
20.06.2018, 06:23:03
Post
#3
|
|
Grupa: Zarejestrowani Postów: 531 Pomógł: 55 Dołączył: 3.01.2016 Skąd: Łowicz Ostrzeżenie: (0%) |
Numerem zamówienia może być ID zamówienia lub jakiś hash aby nikt nie wiedział które to zamówienia,
Możesz sobie napisać klasę do autonumeracji, która generuje kolejny numer i na czas generowania blokuję bazę w celu wygenerowania kolejnego numeru, cała operacja trwa milisekundy więc kolejny użytkownik nawet tego nie zauważy. Ja mam tak zrobione w Symfony do generowania numerów zamówień. transakcje i blokada Ten post edytował LowiczakPL 20.06.2018, 06:27:25 -------------------- Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
|
|
|
21.06.2018, 07:30:24
Post
#4
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Generalnie: Nie
Teoretycznie: tak bo to zależy od tego jak masz skonstruowaną strukturę bazy oraz kod do obsługi. I o |
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 23:31 |