[英]How to overcome ZF2 session start in console request
我正在使用控制台路由從終端運行ZF2操作。 正在運行的用戶不是Apache,並且該請求不是http請求。 該應用程序引發錯誤,表明它沒有寫會話文件的權限。
使用控制台路由時,有什么方法可以避免會話?
控制台請求和http請求可以通過請求類彼此區分開。 您可以使用它來識別請求類型,並在應用程序中禁用或啟用某些功能:
您可以輕松地在module.php
文件中使用此功能,例如,使用引導方法。 我將使用ZF2文檔中的會話示例來演示其工作方式:
<?php
use Zend\Mvc\MvcEvent;
use Zend\Http\Request as HttpRequest;
use Zend\Console\Request as ConsoleRequest;
use Zend\Session\SessionManager;
use Zend\Session\Container;
class Module
{
public function onBootstrap(MvcEvent $event)
{
$eventManager = $event->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
$this->bootstrapSession($event);
}
public function bootstrapSession(MvcEvent $event)
{
$request = $event->getRequest();
if($request instanceof ConsoleRequest){
// nothing to do
return
}
$session = $event->getApplication()
->getServiceManager()
->get('Zend\Session\SessionManager');
$session->start();
//... remaining code for session
}
}
您當然可以想到其他任何變體:
if(! $request instanceof HttpRequest){
return;
}
if($request instanceof ConsoleRequest){
//.. do something
}elseif($request instanceof HttpRequest){
//.. do something else
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.