我有一个基于 nginx、fastcgi 和 mysql 之上的代码点火器框架的网络应用程序
我有一个支付表。表结构在这里。
在此表中,存储了国家名称、每分钟成本与近 56,373 条记录。
在主页中,有一个表格要求用户输入他的手机号码以检索每分钟费用。顺便说一句,我在用户输入时使用自动完成功能
这是我的后端代码:
$str 保存用户输入(手机号码)
$ret = 真;$计数 = 3;
while($ret){
$sub = substr($str,0,$count); //9053
$ret = R::getAll("SELECT Destination,PerMinuteCost FROM `payout` WHERE `Prefix` REGEXP '^$sub(.)*$' LIMIT 0 , 30");
$count++;
}
$sub = substr($str,0,$count-2);
$ret = R::getAll("SELECT Destination,PerMinuteCost FROM `payout` WHERE `Prefix` REGEXP '^$sub(.)*$' LIMIT 0 , 30");
return $ret[0];
这段代码让我从手机号码中获取每分钟费用。(该表仅包含前缀而不是所有手机号码)
我对 nginx 和 fastcgi 做了一些修改以延长超时限制
但是当太多人同时使用该服务时,mysqld cpu 使用率超过 100%,
我该如何改进这个算法?
谢谢。