Slim 3 — ошибка 500 при параллельном вызове маршрутов

Я развернул свое угловое приложение на сервере общего хостинга и получаю ошибку 500 каждый раз, когда угловое приложение отправляет несколько запросов к одному и тому же префиксу маршрута. Мои маршруты в slim 3 структурированы так:

$app->get('/players', function($request, $response, $args){ .. }
$app->post('/players', function($request, $response, $args){ ... }
$app->post('/players-exists', function($request, $response, $args){ ... }
$app->post('/players/create', function($request, $response, $args){ ... }
$app->get('/players/stats', function($request, $response, $args){ ... }
$app->post('/players/{id:[0-9]+}', function($request, $response, $args){ ... }
$app->get('/players/{id:[0-9]+}', function($request, $response, $args){ ... }
$app->get('/players/{id:[0-9]+}/stats', function($request, $response, $args){ ... }
$app->get('/players/{id:[0-9]+}/ranking', function($request, $response, $args){ ... }

В моем угловом приложении я использую метод $ q.all () для одновременного вызова запросов.

var promises = {
event: eventService.getEvent($stateParams.eventId),
scorers: eventService.getEventScorers($stateParams.eventId),
eventOwners: userService.getUsersLite('', roles.TEAM_ADMIN),
games: gameService.getGames(vm.model.gameListContext),
teams: eventService.getEventTeams($stateParams.eventId),
players: eventService.getEventPlayers($stateParams.eventId)
};

$q.all(promises).then(mgr.onLoadAllPromises);

В этих запросах 4 из них звонят с одного и того же префикса маршрута. Подобно:

/events/{id}
/events/{id}/scorers
/events/{id}/players
/events/{id}/teams

Ошибки несовместимы, иногда возникает ошибка 500 в / events / {id}, а иногда в этих двух, / events / {id} / Players и / Events / {id} / команды. Кажется, есть максимальное количество запросов на префикс маршрута (я не уверен), и если есть, как я могу увеличить это в slim 3?

1

Решение

Где бы вы ни создавали свое тонкое приложение, добавьте приведенное ниже имя файла и правило в свой файл .htaccess. Это будет направлять трафик API к маршрутизатору при вызове маршрутов.

// SlimApp.php
require_once '../vendor/autoload.php';
$app = new \Slim\App();
$app->run();

Попробуйте добавить следующее в ваш файл .htaccess

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(/.*)?$ SlimApp.php [QSA,L]
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]