Php 维护运行之间的状态|会话使用

Php 维护运行之间的状态|会话使用,php,Php,有不同的方式来运行PHP代码。例如,用户发起的重新加载和用户发起的ajax请求 什么是保持这些状态之间的最佳方式? < P>认为PHP是分开运行的。两件事: 不要使用全局变量。。。它们是坏的:考虑把“session”类作为静态函数集合,将Session SID作为静态成员VAR。 只需在第二个代码段中创建一个新的会话类: 对于该特定用户,会话id在所有页面视图中都是相同的,因此在第二个代码段中创建新会话()仍将引用在第一个代码段中启动的相同会话 下面是静态实现的样子: // class nam

有不同的方式来运行PHP代码。例如,用户发起的重新加载和用户发起的ajax请求


什么是保持这些状态之间的最佳方式?

< P>认为PHP是分开运行的。两件事:

  • 不要使用全局变量。。。它们是坏的:考虑把“session”类作为静态函数集合,将Session SID作为静态成员VAR。
  • 只需在第二个代码段中创建一个新的会话类:
  • 对于该特定用户,会话id在所有页面视图中都是相同的,因此在第二个代码段中创建新会话()仍将引用在第一个代码段中启动的相同会话

    下面是静态实现的样子:

    
    // class names should be camel-cased
    class SessionManager
    {
        protected static $session_id = null;
    
        public static function start()
        {
            self::$session_id = session_start();
        }
    
        // ... and so on
    }
    
    // to use
    SessionManager::start();
    SessionManager::activate('email', $email);
    

    这应该是你真正需要的。当然有很多方法可以做到这一点,但这应该让你开始:)

    全局语言,顺便说一句,由于很多原因是不好的,但它们也不是很有效。记住PHP本质上是无状态的。。。请求之间不共享任何内容。。。因此,一个请求中的静态类不会与另一个共享(即使它们是并发的)。我将更新上面的答案,以回答您的第二个问题:您的AJAX处理程序是否加载(或直接命中)index.php?如果这是实例化对象的唯一位置,并且AJAX调用没有以任何方式调用index.php,那么就不会为AJAX调用创建对象。
    
    // class names should be camel-cased
    class SessionManager
    {
        protected static $session_id = null;
    
        public static function start()
        {
            self::$session_id = session_start();
        }
    
        // ... and so on
    }
    
    // to use
    SessionManager::start();
    SessionManager::activate('email', $email);