簡體   English   中英

如何克服控制台請求中的ZF2會話啟動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM