主なアクションの実行ごとにユーザーに課金するデスクトップソフトウェアを開発しています。たとえば、PDF 印刷ごとにユーザーに 0.1 ドルを請求するとします。
私のソフトウェアはマルチスレッドを提供します。.
したがって、シングルスレッドで実行すると正常に動作します:)
しかし問題は、ユーザーが一度に複数のスレッドを実行する場合です (たとえば、10/20 スレッド)
それ(php)は、ユーザーがサーバー/実行でも残高がゼロを下回ることを許可し続けます..
私のphpスクリプトは残高が正かどうかを確認しますが..
ただし、ユーザーが複数のスレッドを実行した後、残高は -5.95$ または -25.75$ などのようになります
そして、それは大きなセキュリティ/財政問題です..
ここに私が使用しているコードがあります:
<?php
$strSQL = "Select * from users where Email = '$strUser'";
$return = mysql_query($strSQL, $strDBConn);
$strDBData = mysql_fetch_array($return, MYSQL_ASSOC);
//checking balance
$strBalance = $strDBData['Balance'];
if($strBalance < 0)
{
// if balance 0 then exit so, my software/thread will not process further
mysql_close($strDBConn);
exit('Balance Exceed');
}
//rest of the codes that realted to service executaion
// code that substract the balnce
$dblCost = 0.25;
$strSQL = "Update users set Balance = Balance - '$dblCost' where Email = '$strUser'";
$return = mysql_query($strSQL, $strDBConn);
//rest finising codes
?>
どんな助け/提案も大歓迎です..
前もって感謝します。よろしくお願いします