0

主なアクションの実行ごとにユーザーに課金するデスクトップソフトウェアを開発しています。たとえば、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 

?>

どんな助け/提案も大歓迎です..

前もって感謝します。よろしくお願いします

4

1 に答える 1