首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何克服控制台请求中ZF2会话启动

如何克服控制台请求中ZF2会话启动
EN

Stack Overflow用户
提问于 2015-12-09 12:17:18
回答 1查看 250关注 0票数 1

我正在使用控制台路由从终端运行ZF2操作。运行的用户不是Apache,请求也不是http请求。应用程序抛出一个错误,指出它没有写入会话文件的权限。

当我使用控制台路由时,有没有办法避免会话?

EN

回答 1

Stack Overflow用户

发布于 2015-12-09 16:33:46

控制台请求和http请求可以通过请求类别相互区分。您可以使用它来识别请求类型,并禁用或启用应用程序中的某些功能:

您可以很容易地在module.php文件中使用它,例如,在bootstrap方法中。我将使用会话示例from the ZF2 documentation来说明这是如何工作的:

代码语言:javascript
运行
复制
<?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
    }
}

当然,您可以想到任何其他变体:

代码语言:javascript
运行
复制
if(! $request instanceof HttpRequest){
    return;
}

if($request instanceof ConsoleRequest){
    //.. do something
}elseif($request instanceof HttpRequest){
    //.. do something else
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34170625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档