我正在 PHP 框架(Codeigniter 2.1.0)中开发 LMS 应用程序。我正在使用 MySQL 数据库。数据库中的所有表都有innodb引擎。我还在每个表上创建了索引。现在我正在本地使用 Jmeter 2.9 版同时对 200 个用户进行负载测试。在负载测试期间,在特定页面操作中,我遇到了Deadlock Found错误。我将原始查询更改为新查询,但再次发生相同的错误。
我已经编写了 save_interactions 函数,它需要四个参数交互数组、module_id、course_id、user_id & 被 AJAX 脚本调用了很多次。如果特定的interaction_id 不存在于该表中,则以下脚本将插入记录,否则更新查询将被触发。
public function save_interactions($interaction_array,$modid,$cid,$uid)
{
foreach($interaction_array as $key=>$interact_value)
{
$select_query = $this->db->query("SELECT COUNT(*) AS total FROM `scorm_interactions` WHERE `mod_id`='".$modid."' AND `course_id`='".$cid."' AND `user_id`='".$uid."' AND `interaction_id`='".$interact_value[0]."'");
$fetchRow = $select_query->row_array();
if($fetchRow['total']==1)
{
$update_data = array(
"interaction_type"=>$interact_value[1],
"time"=>$interact_value[2],
"weighting"=>$interact_value[3],
"correct_response"=>$interact_value[4],
"learner_response"=>$interact_value[5],
"result"=>$interact_value[6],
"latency"=>$interact_value[7],
"objectives"=>$interact_value[8],
"description"=>$interact_value[9]
);
$this->db->where('mod_id', $modid);
$this->db->where('course_id', $cid);
$this->db->where('user_id', $uid);
$this->db->where('interaction_id', $interact_value[0]);
$this->db->update('scorm_interactions', $update_data);
}else
{
$insert_data = …Run Code Online (Sandbox Code Playgroud)