Разрешенный объем памяти исчерпан в PHP - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть следующий код для получения всех деталей времени вопроса и ответов:

<?php
session_start();
include('education/hub/kautilya/connection.php');

    function getAllAnswersAndTime($papId)
    {
        $c=new Connection;
        $conn=$c->getConnection();
        $date=date("Y-m-d");        
        $sql="select GROUP_CONCAT(`all_time_questions`) as `time`, GROUP_CONCAT(`all_answers`) as `answers` from `result` where `paper_id` = '$papId'";
        $record=$conn->query($sql);
        return $record;

    }
$papId = $_REQUEST['papId'];
$resall = getAllAnswersAndTime($papId);
$alltime = "";
$allans = "";


function multiexplode ($delimiters,$data) {
    $MakeReady = str_replace($delimiters, $delimiters[0], $data);
    $Return    = explode($delimiters[0], $MakeReady);
    return  $Return;
}


$totalCandidates = 0;
foreach($resall as $row)
{
    $totalCandidates +=1 ;
    $alltime = $row['time'];
    $allans = $row['answers'];
}
unset($resall);
$alltime = ltrim($alltime, "::");
$all_time = multiexplode(array("::","=>"), $alltime);
$all_ans = multiexplode(array("::","=>"), $allans);
$total = 0;
$total_times = [];
$total_ans = [];
for($i = 0; $i < count($all_time); $i+=1)
{
    if($i%2==1)
    {
        $total_times[$all_time[$i-1]] += $all_time[$i];
        $total_ans[$all_time[$i-1]] = 0;
    }
}


for($i = 0; $i < count($total_times); $i+=1)
{
    $total_times[$i] /= $totalCandidates;
}
for($i = 0; $i < count($all_ans); $i+=1)
{
    if($i%2==1)
    {
        $total_ans[$all_ans[$i-1]] += 1;
    }
}

for($i = 0; $i < count($total_ans); $i+=1)
{
    $total_ans[$i] /= $totalCandidates;
    $total_ans[$i] *= 100;
}

$cc['tot_ans'] = $total_ans;
$cc['tot_time'] = $total_times;
echo json_encode($cc);
?>

Я получаю сообщение об ошибке Разрешенный объем памяти, исчерпанный в файле error_log.Я прочитал другие вопросы и попробовал как установить memory_limit=2048M, так и оптимизировать запрос, чтобы он возвращал сцепленные строки, но, похоже, это не решило проблему.Может кто-нибудь подсказать, пожалуйста, как решить эту проблему?

Кроме того, данные совсем не большие, это всего лишь две строки с примерно 20 записями в результате в массивах.

...