我正在开发一个桌面软件,它会在每次执行主要操作时向用户收费。例如,它将向用户收取每份 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
?>
任何帮助/建议将不胜感激..
提前致谢。此致