Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Баланс на обменниках
 
 автор: Shorr Kan   (07.02.2007 в 01:27)   письмо автору
 
 

Предположим, есть онлайн-обменник. Для простоты: wmr на wmz.

Баланс wmz у скрипта обменника - 1000.

Приходит посетитель А, начинает менять... операция не завершена пока - процесс идет.
Приходит посетитель Б, начинает менять...

Оба уже находятся на страничке мерчанта вебмани.

Оба захотели получить 1000 wmz. Оба отдали нужную сумму и полетели на скрипт.
Скрипт первому оплатил 1000 wmz, второму не смог - нечем. Тем не менее, оба человека wmr отдали.

Как решаются подобные потенциальные проблемы? То есть, как избегать подобных ситуаций?

   
 
 автор: cheops   (07.02.2007 в 01:42)   письмо автору
 
   для: Shorr Kan   (07.02.2007 в 01:27)
 

Транзакциями. Транзакция - это последовательность SQL-инструкций, которая либо выполняется полностью, либо, если не выполняется, откатывается к состоянию, предшествующему началу транзакции.

   
 
 автор: Shorr Kan   (07.02.2007 в 02:10)   письмо автору
 
   для: cheops   (07.02.2007 в 01:42)
 

Так нет... люди независимо друг от друга пришли... оплатили... почти одновременно.
Скрипт тут не может ничего поделать - люди...
Они оплатили. Скрипт деньги получил. А отправить может только одному.
Разве тут транзакции sql как-то помогут? Тут вообще до sql дело не доходит.

   
 
 автор: 12345   (07.02.2007 в 12:26)   письмо автору
 
   для: Shorr Kan   (07.02.2007 в 02:10)
 

Значит, неправильно сделан скрипт. Он должен доходить до транзакции, и выполнять, только если сумма есть на счету. При этом сумма резервируется и в других операциях участвовать не может до окончания транзакции.

   
 
 автор: Shorr Kan   (08.02.2007 в 09:24)   письмо автору
 
   для: 12345   (07.02.2007 в 12:26)
 

Да вы поймите... скрипт обменника - это не скрипт платежной системы. Представьте - у человека включен кипер вебмани... ему пришел счет... он взял и не оплатил сразу... повременил.
Тем временем - другие люди активно меняют.
Через десять минут тот, первый бедолага оплачивает-таки счёт (заметьте, в кипере вебмани. На сайт обменника даже не смотрит), а скрипт в ответ послать ничего не может. Понимаете?

   
 
 автор: 123   (22.05.2007 в 03:42)
 
   для: Shorr Kan   (08.02.2007 в 09:24)
 

оплату счёта ведь нужно подтвердить на сайте. и тогда придут деньги.

   
 
 автор: Trianon   (07.02.2007 в 12:42)   письмо автору
 
   для: Shorr Kan   (07.02.2007 в 02:10)
 

Реально скрипт поделит текущий баланс на ограничение по обмену и выставит соответствующее ограничение по числу обслуживаемых сессий. Остальным просто напишет "подождите, пожалуйста" еще до начала операции.

   
 
 автор: Shorr Kan   (08.02.2007 в 09:25)   письмо автору
 
   для: Trianon   (07.02.2007 в 12:42)
 

Trianon, спасибо, видимо так и есть.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования