diff --git a/app/Http/Controllers/ExercicioController.php b/app/Http/Controllers/ExercicioController.php index 2e728ae..9b49e48 100644 --- a/app/Http/Controllers/ExercicioController.php +++ b/app/Http/Controllers/ExercicioController.php @@ -199,18 +199,8 @@ private function corretoR(Exercicio $exercicio, string $file) } try { - $rcode = '' - // import files - . 'file.copy(list.files("/arquivos/",recursive=TRUE,full.names=TRUE),".");' - // Limits memory usage - . 'rlimit_as(1e9);' - . 'rlimit_cpu(15);' - // run corretoR - . 'res <- notaR(' . $exercicio->id . ',"' . $file . '");' - . 'unlink("*",recursive=TRUE);' - // Returns the "res" object to caller - . 'res;' - ; + // run corretoR + $rcode = 'notaR(' . $exercicio->id . ',"' . $file . '");'; $r = $cnx->evalString($rcode); } catch (Exception $e) { return [ diff --git a/docker/R/corretor.R b/docker/R/corretor.R index 569c5f4..c7a8a72 100644 --- a/docker/R/corretor.R +++ b/docker/R/corretor.R @@ -28,6 +28,10 @@ corretoR <- function (precondi, testes, texto) { # Executa as precondicoes if(!no.results(precondi)) eval(parse(text=precondi), envir=corrEnv); + # Limits memory usage + rlimit_as(1e10); + rlimit_cpu(15); + # Executa o texto da resposta getError <- try(eval( c(parse(text=texto),"TRUE"), # Evita que o codigo retorne matrizes @@ -53,7 +57,11 @@ corretoR <- function (precondi, testes, texto) { # Recebe o exercicio, transforma o texto em string, corrige, e retorna o vetor de true/false para os testes passados notaR <- function (id.exerc, arquivo) { + # import files + file.copy(list.files("/arquivos/", recursive=TRUE, full.names=TRUE), "."); + # Read file texto <- readLines(arquivo, encoding="utf8"); + # Get exercicio testes <- dbGetQuery(con, paste("SELECT condicao FROM testes WHERE exercicio_id=", id.exerc, @@ -62,12 +70,10 @@ notaR <- function (id.exerc, arquivo) { paste("SELECT precondicoes FROM exercicios WHERE id=", id.exerc, sep="")); + # Run corretor nota <- corretoR (precondi, testes, texto); - # Tenta de novo com charset latin1: - if (is.null(nota)) { - texto <- readLines(arquivo, encoding="latin1"); - nota <- corretoR (precondi, testes, texto); - } + # Delete files + unlink("*", recursive=TRUE); return (nota); }