我有两个动作,并且在一个动作中我调用另一个动作但是symfony阻止该呼叫直到第一个(我正在呼叫的那个)完成。因此,由于这个事实我有时间错误。有谁知道可能是什么原因?
行动很简单:
$url = $this->router->generate(
'invoice_show',
[
'invoiceId' => $invoiceId,
],
UrlGeneratorInterface::ABSOLUTE_URL
);
return new Response(
$this->pdfGenerator->getOutput(
$url,
[
'margin-bottom' => 3,
'margin-top' => 3,
'margin-left' => 4,
'margin-right' => 4,
'disable-javascript' => true,
'load-error-handling' => 'ignore',
'cookie' => $request->cookies->all(),
]
),
200,
[
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'attachment; filename="' . $invoiceId . '.pdf"',
]
);
例外:
的Symfony \元器件\过程\异常\ ProcessTimedOutException(代码: 0):进程\" / usr / bin / xvfb-run / usr / bin / wkhtmltopdf --lowquality - margin-bottom' 3' --margin-left' 4' - margin-right' 4' --margin-top' 3' --disable -javascript - load-error-handling' ignore' ' http://localhost/invoices/in_1Atlve2rN1gYNyHu4Ixmy8ZI' ' /var/www/var/cache/dev/snappy/knp_snappy599cffb13836d0.68608376.pdf' \" 超过60秒的超时。在 /var/www/vendor/symfony/symfony/src/Symfony/Component/Process/Process.php:1265
答案 0 :(得分:0)
根据您使用symfony的会话处理程序,它可能会锁定会话,直到第一个请求完成。 这意味着将阻止所有后续请求以防止在写入会话时出现并发问题(在两个请求中写入相同的会话可能会导致丢失第一次写入)。
例如PDOSessionHandler就属于这种情况。
您可以通过调用控制器中的$request->session->save();
来明确关闭会话。
如果您不期待并发问题,例如:如果你根本不写会话,你也可以禁用整个应用程序的会话锁定:
session.handler.pdo:
class: Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler
public: false
arguments:
- "pgsql:host=%database_host%;port=%database_port%;dbname=%database_name%"
- db_username: %database_user%
db_password: %database_password%
db_table: session
db_id_col: session_id
db_data_col: session_value
db_time_col: session_time
db_lifetime_col: session_lifetime
lock_mode: 0