0
我有一個連接到Symfony2請求的問題。當我做請求時,一個進程,從MongoDB加載數據,開始。如果我在瀏覽器中打開一個新選項卡,並且我對應用程序(也適用於不同的路由)做出任何請求,儘管我已經關閉了舊選項卡,但會顯示一個空白頁面,等待響應。Symfony2請求併發
會話管理是本地的。我會新的請求殺死所有已經運行的進程。不是會話併發的問題,因爲我想要一個'最後會贏'的方法。我認爲這個問題與HttpKernel的請求處理有關,但我無法解決它。你可以幫我嗎?
這是控制器的動作:
/**
* @Security("is_granted('IS_AUTHENTICATED_FULLY')")
*/
public function searchAction(Request $request, $page = null)
{
//controlla la lista di autorizzazioni: l'utente può eseguire l'action solo se autorizzato per quell'attributo
if ($this->authlist != null) {
$authorized = false;
foreach ($this->authlist as $auth) {
if ($this->security_auth_checker->isGranted($auth, new VoterHelper())) {
$authorized = true;
break;
}
}
if (!$authorized) {
throw new AccessDeniedException("Accesso negato! L'utente non può accedere a questa funzionalità !");
}
}
//recupera i dati
$session = $request->getSession();
$form = $this->formFactory->create($this->formType);
$sessionNamePage = $this->formType->getName().'_page';
if (($page) && ($session->get($this->formType->getName()))) {
$form_data = $session->get($this->formType->getName());
$form->setData($form_data);
$session->set($sessionNamePage, $page);
} else {
$session->remove($sessionNamePage);
}
$form->handleRequest($request);
if ($form->isValid()) {
$form_data = $form->getData();
}
//passa alla business logic i parametri della form, i dati di paginazione e offset ed eventualmente la queryString del metodo get
if (isset($form_data)) {
$queryString = $request->getQueryString();
// $form_data['page'] = $page;
// $form_data['offset'] = self::OFFSET;
$data = array();
$data['form_data'] = $form_data;
$data['page'] = $page;
$data['offset'] = self::OFFSET;
$data['query_string'] = $queryString;
$results = $this->businessLogic->execute($data);
if (is_array($results) && isset($results['reportsCounts'])) {
$form_data['report_count'] = $results['reportsCounts'];
$reports = $results['reports'];
} else {
$reports = $results;
}
}
if ($form->isValid()) {
// $form_data = $form->getData();
$session->set($this->formType->getName(), $form_data);
$sessionNamePage = $this->formType->getName().'_page';
if (!$session->get($sessionNamePage)) {
$session->set($sessionNamePage, 1);
}
}
return $this->templating->renderResponse($this->templatePath, array(
'report_count' => (isset($form_data['report_count'])) ? $form_data['report_count'] : null,
'reports' => (isset($reports)) ? $reports : null,
'page' => $page,
'offset' => self::OFFSET,
'form' => $form->createView(),
));
尋求調試幫助的問題(**「爲什麼代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現它所需的最短代碼* **。沒有**明確問題陳述**的問題對其他讀者無用。請參閱:[如何創建最小,完整和可驗證示例。](http://stackoverflow.com/help/mcve) –
您可以分享您正在使用的代碼嗎? – SunUser
如果我分析探查器,似乎問題是安全防火牆,等待響應.... – DanieleVT