Ajax请求导致服务器崩溃

时间:2013-11-16 12:27:48

标签: php mysql ajax

我有一个网站,学生可以参加在线测验。每次他们选择答案(用于多选的单选按钮)时,都会执行以下代码:

$('input:radio').click(function(){
var questionId = $(this).parent().parent().find('.qid').val();
var answer = $(this).val();
$.ajax({
        type: "POST",
        url: "insertqanswerajax.php",
        data: {questionId: questionId, answer: answer},
    });

});

insertqanswerajax.php代码:

<?php session_start();
include_once('../includes/connect.php');     //connect to database
include_once('../functions/quizfunctions.php');   //all functions
$userSubject = $_SESSION['subject'];
$userGradeLevel = $_SESSION['gradeLevel'];
$userId = $_SESSION['userId'];
$questionId = $_POST['questionId'];
$answer = $_POST['answer'];



insertQuizAnswer($questionId, $userId, $answer, 1);
$DB = null;

?>

和insertQuizAnwer函数:

function insertQuizAnswer($questionId, $userId, $answer, $testId){
global $DB;                                          
$standardsHandle = $DB->prepare("INSERT INTO quizanswers (questionid, userid, answer, testid)
                                VALUES (:questionId, :userId, :answer, :testId)
                                ");   //get all benchmark grades for user
$standardsHandle->bindParam(':questionId', $questionId);
$standardsHandle->bindParam(':userId', $userId);
$standardsHandle->bindParam(':answer', $answer);
$standardsHandle->bindParam(':testId', $testId);
$standardsHandle->execute();
$standardsHandle = null;
}

代码工作正常,直到卷变重(几百个用户参加测试)。服务器崩溃并且您收到默认的500错误,该网站会在一两分钟后恢复。您只需反复单击一个单选按钮即可复制错误。

我的内存限制为524兆字节,可能高于我的计划实际允许的范围。

这部分代码存在的原因是为了保存用户的答案,这使得他们可以稍后返回,或者如果学校网络掉线(它确实如此),他们就会从中断的地方回来。

我正在使用共享托管计划,我知道它有其局限性,我正在尝试确定是否有办法使这项工作或者我的共享计划根本无法实现。

1 个答案:

答案 0 :(得分:0)

这是您托管的问题。 要解决此问题,您必须购买带宽更大的主机方案(以同时处理多个请求)。您可以与托管服务提供商讨论此问题。