Workerman\Protocols\Http::sessionStart PHP Метод

sessionStart() публичный статический Метод

sessionStart
public static sessionStart ( ) : boolean
Результат boolean
    public static function sessionStart()
    {
        if (PHP_SAPI != 'cli') {
            return session_start();
        }
        self::tryGcSessions();
        if (HttpCache::$instance->sessionStarted) {
            echo "already sessionStarted\n";
            return true;
        }
        HttpCache::$instance->sessionStarted = true;
        // Generate a SID.
        if (!isset($_COOKIE[HttpCache::$sessionName]) || !is_file(HttpCache::$sessionPath . '/ses' . $_COOKIE[HttpCache::$sessionName])) {
            $file_name = tempnam(HttpCache::$sessionPath, 'ses');
            if (!$file_name) {
                return false;
            }
            HttpCache::$instance->sessionFile = $file_name;
            $session_id = substr(basename($file_name), strlen('ses'));
            return self::setcookie(HttpCache::$sessionName, $session_id, ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly'));
        }
        if (!HttpCache::$instance->sessionFile) {
            HttpCache::$instance->sessionFile = HttpCache::$sessionPath . '/ses' . $_COOKIE[HttpCache::$sessionName];
        }
        // Read session from session file.
        if (HttpCache::$instance->sessionFile) {
            $raw = file_get_contents(HttpCache::$instance->sessionFile);
            if ($raw) {
                session_decode($raw);
            }
        }
        return true;
    }

Usage Example

Пример #1
0
/**
 * 启动session,兼容fpm
 */
function _session_start()
{
    if (defined('WORKERMAN_ROOT_DIR')) {
        return Http::sessionStart();
    }
    return session_start();
}
All Usage Examples Of Workerman\Protocols\Http::sessionStart