1

我是一名数学老师,他为我的学校建立了一个在线测试网站(又名,不是专业人士)。该网站运行良好,但随着我学校使用量的增加,我开始遇到内存问题(我认为)。在我有大约 50 到 60 个用户同时使用该网站后,整个网站开始崩溃,几分钟后它会恢复。我从来没有遇到过低使用率的问题。学生进行测验的页面加载了 10 个问题,每个问题都有 4 个单选选项。(没有很多jquery发生)。每次用户单击答案时,我都会使用 ajax 将他们的答案存储在数据库中。下面是在他们参加测验时发送点击的 jquery 代码。

$('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},
    });

});

当我在我的 cpanel 中加载系统进程时,我看到有 5 个不同的进程正在运行,每个进程大约 80 兆字节。我的 php.ini 中的最大值设置为 540MB。如果我使用 memory_get_peak_usage() 检查页面,它的读数永远不会超过半兆字节,但是在控制台时间轴中,我可以看到一个用户的内存使用量几乎高达 10 兆字节(下图)。我需要检查什么,或者解决差异的最佳方法是什么?什么可能导致问题?如果需要,我可以提供更多信息,我只是不确定所有相关信息。

提前感谢您的帮助。

这是通过ajax访问的php文件的代码

<?php session_start();
include('../includes/startup.php');
$questionId = $_POST['questionId'];
$answer = $_POST['answer'];



insertQuizAnswer($questionId, $userId, $answer, 1);


?> 

该文件中调用的函数:

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

并且两者都加载了启动文件:

<?php
if(preg_match('/(?i)msie [2-7]/',$_SERVER['HTTP_USER_AGENT']))
{
// if IE < 8
echo "My Class Progress does not Work with this version of Internet Explorer</br>
<a href='https://www.google.com/intl/en/chrome/browser/'>Click Here to Download a more modern browser</a>";
exit;
}
else
{

}
if(isset($_POST['getGrade'])){
$_SESSION['gradeLevel'] = $_POST['getGrade'];
}
if(isset($_POST['getSubject'])){
$_SESSION['subject'] = $_POST['getSubject'];
}
include_once('../functions/userfunctions.php');   //all functions
include_once('../functions/goalfunctions.php');   //all functions
include_once('../functions/modulefunctions.php');   //all functions
include_once('../functions/globalfunctions.php');   //all functions
include_once('../functions/skillfunctions.php');   //all functions
include_once('../functions/quizfunctions.php');   //all functions
include_once('../functions/practicefunctions.php');   //all functions
include_once('../functions/benchmarkfunctions.php');   //all functions
include_once('../functions/dockfunctions.php');   //all functions
include_once('../functions/dashboardfunctions.php');   //all functions
include_once('../functions/notificationfunctions.php');   //all functions
include_once('../includes/connect.php');     //connect to database
$userSubject = $_SESSION['subject'];
$userGradeLevel = $_SESSION['gradeLevel'];
$userId = $_SESSION['userId'];
if ($_SESSION['loggedIn'] == 'true'){
}   
    else{
    header('location: ../../index.php');
    die();
    }

?>

这是访问的 connect.php 文件:

try {                                                                                 
$DB = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);   
}

catch(PDOException $e) {      
 echo $e->getMessage();
}

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

0

使用的内存量取决于 ini_set('memory_limit'); 这个数量是由 Apache 保留的,不管脚本实际使用了多少内存,直到它耗尽内存。

于 2013-11-14T23:22:15.960 回答