GVKun编程网logo

php – Zend Framework在不活动后自动注销(php停止)

24

关于php–ZendFramework在不活动后自动注销和php停止的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于php–ZendFramework性能(自动加载)、ZendFramew

关于php – Zend Framework在不活动后自动注销php停止的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于php – Zend Framework性能(自动加载)、Zend Framework 22稳定版发布 php zend framework zend framework mvc zend framework pdf、zend framework Array of country list in PHP with Zend Framework、zend framework Zend framework处理一个http请求的流程分析等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

php – Zend Framework在不活动后自动注销(php停止)

php – Zend Framework在不活动后自动注销(php停止)

我正在开发一个包含多个子应用程序的应用程序,我想在30分钟不活动后实现自动注销.我有一个AuthController,其登录和注销操作使用Bootstrap.PHP以及前面的控制器插件映射到自定义/登录和/登出路由,如下所示:

class Plugin_SessionTrack extends Zend_Controller_Plugin_Abstract {

    public function predispatch(Zend_Controller_Request_Abstract $request)
    {  

        $employeeSession = new Zend_Session_Namespace('employeeSession');
        $employeeSession->setExpirationSeconds(10);

    }
}

我是PHP和Zend的新手,10秒后会话到底发生了什么?我把它设置为低测试.我想要发生的是,如果通过前端控制器插件的最后一次请求的时间大于30分钟,则销毁会话并将用户注销并将其重定向到/ login.

我可以清楚地看到我没有跟踪上次请求的时间,但我希望每次用户通过此predispatch方法发出请求时都会刷新setExpirationSeconds.

也许需要使用cookie?我不需要实际启动注销操作,它可以在用户下次发出请求时进行处理,如果他们在过去半小时内没有做任何事情会话被销毁并且他们已经注销,这意味着如果我走开45分钟,我的屏幕看起来仍然相同,但如果我点击一个链接或尝试提交一个表格,我就把它发送给/ login.我稍后会担心某种类型的JS倒计时警告.

编辑:如果有人想看到它,这是我的引导程序:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    /**
     * Custom routes:
     * 
     * /login
     * /logout
     */
    protected function _initRoutes()
    {

        $router = Zend_Controller_Front::getInstance()->getRouter();

        $loginRoute = new Zend_Controller_Router_Route('login', array('controller' => 'auth', 'action' => 'login'));

        $logoutRoute = new Zend_Controller_Router_Route('logout', array('controller' => 'auth', 'action' => 'logout'));

        $routesArray = array('login' => $loginRoute, 'logout' => $logoutRoute);

        $router->addRoutes($routesArray);

    }

    protected function _initPlugins()
    {

        $frontController = Zend_Controller_Front::getInstance();
        $frontController->registerPlugin(new Plugin_SessionTrack());

    }
}

解决方法:

当你调用Zend_Session :: setExpirationSeconds(10)时,在10秒时间之后,会话实际上没有发生任何事情.

此调用导致Zend_Session存储一个内部值,标记该会话命名空间在调用时的time()$seconds时到期.每次Zend_Session启动时,它都会检查是否有任何会话数据标记为过期,如果是,则继续检查过期时间或跳数是否已经过去.如果是这种情况,则会在初始化时取消设置相关的会话数据,因此您的应用程序无法再访问该数据.

如果您在每个请求开始时进行此调用,则应在每次页面加载时继续延长会话的生命周期.

请记住,如果将PHP.ini中的会话设置设置为在15分钟后使会话过期,则将命名空间设置为在60分钟后过期将不会覆盖PHP的15分钟会话生存期.您可以在application.ini文件中对PHP的会话指令进行此类调整.

在命名空间上设置过期还具有自动删除某些会话数据而不必销毁整个会话的优点.

我不知道您的应用程序的具体细节,但您可以使用该插件检查并查看它们是否已注销并将请求转发到您的登录页面.您可以在创建命名空间后检查有效登录,但您还希望确保当前请求不是登录尝试.或者你可以推迟检查插件中的有效登录,让你的ACL稍后在控制器级别处理.

您可能还想查看Zend_Auth,您可以使用它来在会话中保留身份.标识可以是指示它们是否已登录的简单布尔值,以及实现Zend_Acl_Role_Interface的完整用户对象. Zend Auth也很容易扩展,因此您可以通过为每个实例使用不同的命名空间来同时激活多个Zend_Auth会话,并且可以让您的自定义auth类在不同的会话命名空间上设置不同的时间限制.

我希望这有助于回答您的问题,如果您对我所说的内容有疑问,请随时发表评论.

编辑:

我测试了以下代码,并在设定的时间后成功过期了我的Zend_Auth身份.我用60秒测试它低,等待60秒后加载页面,我不再拥有身份并被“注销”.您可以将其添加到会话跟踪插件中.

<?PHP
$auth = Zend_Auth::getInstance();

if ($auth->hasIdentity()) { // user is logged in
    // get an instance of Zend_Session_Namespace used by Zend_Auth
    $authns = new Zend_Session_Namespace($auth->getStorage()->getNamespace());

    // set an expiration on the Zend_Auth namespace where identity is held
    $authns->setExpirationSeconds(60 * 30);  // expire auth storage after 30 min
}

php – Zend Framework性能(自动加载)

php – Zend Framework性能(自动加载)

我已经阅读了很多关于ZF性能的文章,但仍然无法理解,如果我启用了字节码缓存(APC),使用其他一些技巧是否有意义?例如.禁用自动加载并使用一个大的PHP文件,而不是所有必需的类.

解决方法:

我很惊讶地发现这是网站上标记性能,autoload,PHP的唯一问题.比这更好的地方是打消#1自动加载神话:

现代的,精心设计的自动加载器不会破坏APC(或PHP 5.5的OPcache),并且性能不比require_once差(当然除了函数调用开销).

为什么?好吧,现在我们有spl_autoload_register,它允许你添加多个自动加载处理程序.这允许每个第三方库发送它自己的自动加载器,它知道如何加载该库的文件,并跳过其余的.

例如,Zend Framework 1的Zend_Loader_Autoloader限制自己尝试加载以特定伪命名空间开头的类 – Zend_(以及用户要求加载的任何其他内容).如果它没有以所需的伪命名空间开头,它只是返回并让堆栈中的下一个加载器运行.它也知道它可以在Zend / Foo / Bar / Baz.PHP中找到Zend_Foo_Bar_Baz,因此它不需要手动搜索包含路径.与其他现代框架自动装载机一样,它遵循PSR-0 autoloading standard.

通过composer安装的任何依赖项也以相同的方式自动构建命名空间自动加载器.

这包括路径搜索,这使得设计糟糕的自动装载机很糟糕.您通常在现代PHP代码中看不到这些.尝试查找文件导致的密集文件系统stat调用是一种频繁的性能拖累.查看this presentation by PHP creator Rasmus Lerdorf,他通过基准测试,分析和小心删除慢速操作(如stat调用)来提高wordpress的性能.

当您使用现代库并且没有自带的自动加载器时,来自旧时代的require_once-everything-up-front是不必要的.如果您正在使用APC,那么当您使用0700时,这只是一次重大胜利;如果您使用的是OPcache,则只需要使用OPcache’s validate_, revalidate_, and enable_file_override INI options.

tl; dr:除非你知道statting包含文件是你最大的瓶颈,Zend自动加载器就好了,你不需要求助于require_once fest.

Zend Framework 22稳定版发布 php zend framework zend framework mvc zend framework pdf

Zend Framework 22稳定版发布 php zend framework zend framework mvc zend framework pdf

官方发行说明请看这里。此外,2.2 是官方首次支持数据定义语言 ddl 查询的版本,该特性限制使用 sql92 数据类型来创建表。此外该版本降低了依赖关系。2.2 版本向后兼容以前的版本,详情请看 changelog.

Zend Framework (ZF) 是用 PHP 5 来开发 web 程序和服务的开源框架。ZF 用 100% 面向对象编码实现。 ZF 的组件结构独一无二,每个组件几乎不依靠其他组件。这样的松耦合结构可以让开发者独立使用组件。 我们常称此为 “use-at-will”设计。

【编辑推荐】

  1. 关于PHP实现异步操作的研究
  2. 国外PHP大师给初学者的8条建议
  3. 10位顶级PHP大师的开发原则
  4. Web框架性能排行榜,cakePHP表现最差
  5. PHP与MySQL通讯那点事
  6. Java/PHP/C/Ruby语言相互吐槽的搞笑图片
  7. Google发布GAE PHP Runtime

以上就介绍了Zend Framework 22稳定版发布,包括了zend framework方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

zend framework Array of country list in PHP with Zend Framework

zend framework Array of country list in PHP with Zend Framework

复制代码 代码如下:


public static function countryList($local)
{
$locale = new Zend_Locale(''en_US'');
$countries = ($locale->getTranslationList(''Territory'', $local, 2));
asort($countries, SORT_LOCALE_STRING);
$countries = array_combine($countries, $countries);
return $countries;
}

以上就介绍了zend framework Array of country list in PHP with Zend Framework,包括了zend framework方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

zend framework Zend framework处理一个http请求的流程分析

zend framework Zend framework处理一个http请求的流程分析

 Zend framework处理一个http请求的流程分析

1, 首先是bootstrap过程,初始化程序里用到的资源

2, 创建一个Zend_Controller_Front实体,实现front controller模式,这个实体类会负责将http请求派遣到恰当的controller的action里。

3, Front controller会创建俩个对象来封装http请求和http回复,分别是Zend_Controller_Request_Http和Zend_Controller_Response_Http

4, Front controller会创建俩个对象来实现url寻路和派遣,分别是routing和dispatcher, 分别负责找到指定url应该执行的控制器和动作,和载入对应的程序文件并执行对应的方法。

5, 通过controller的plugin机制,Zend_Controller_Action_ViewRenderer会为controller的实体类创建一个view属性,这个view是一个Zend_View的实体对象。它还负责在controller action请求处理完成后,将相应的template文件render呈现到http response对象里。最后response对象的内容会由Front Controller输出到浏览器。

6, 在第五步中,虽然template文件是由ViewRender助手对象来定位的,但是是由Zend_VIew的一个成员函数执行的(include进这个template文件),所以在Controller里属性里view对象的所有属性和成员函数在template文件里都可以被使用。

这样一个http请求的生命周期就结束了,浏览器获得了内容。在controller的action给view指定要呈现的变量时,它一般会通过Zend_Db_Table与数据库交互,获得数据。

与数据库交互处理数据称为business logic, template文件里也会包涵简单的循环等逻辑,这个称为display logic。

在MVC实现中,Model负责处理business logic, View负责处理display logic,而Controller则负责协调这俩部分,从而Controller的代码应该尽量简洁,它只是作为一个agent存在的。

以上就介绍了zend framework Zend framework处理一个http请求的流程分析,包括了zend framework方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

今天关于php – Zend Framework在不活动后自动注销php停止的讲解已经结束,谢谢您的阅读,如果想了解更多关于php – Zend Framework性能(自动加载)、Zend Framework 22稳定版发布 php zend framework zend framework mvc zend framework pdf、zend framework Array of country list in PHP with Zend Framework、zend framework Zend framework处理一个http请求的流程分析的相关知识,请在本站搜索。

本文标签: