Spanner/src/Session/CacheSessionPool.php
public function warmup()
    {
        $toCreate = $this->config['lock']->synchronize(function () {
            $item = $this->cacheItemPool->getItem($this->cacheKey);
            $data = (array) $item->get() ?: $this->initialize();
            $count = $this->getSessionCount($data);
            $toCreate = [];

            if ($count < $this->config['minSessions']) {
                $toCreate = $this->buildToCreateList($this->config['minSessions'] - $count);
                $data['toCreate'] += $toCreate;
                $this->cacheItemPool->save($item->set($data));
            }

            return $toCreate;
        });

        if (!$toCreate) {
            return 0;
        }

        $createdSessions = [];
        $exception = null;

        try {
            $createdSessions = $this->createSessions(count($toCreate));
        } catch (\Exception $exception) {
        }

        $this->config['lock']->synchronize(function () use ($toCreate, $createdSessions) {
            $item = $this->cacheItemPool->getItem($this->cacheKey);
            $data = $item->get();
            $data['queue'] = array_merge($data['queue'], $createdSessions);

            // Now that we've created the sessions, we can remove them from
            // the list of intent.
            foreach ($toCreate as $id => $time) {
                unset($data['toCreate'][$id]);
            }

            $this->cacheItemPool->save($item->set($data));
        });

        if ($exception) {
            throw $exception;
        }

        return count($toCreate);
    }
public function warmup()
    {
        $toCreate = $this->config['lock']->synchronize(function () {
            $item = $this->cacheItemPool->getItem($this->cacheKey);
            $data = (array) $item->get() ?: $this->initialize();
            $count = $this->getSessionCount($data);
            $toCreate = [];

            if ($count < $this->config['minSessions']) {
                $toCreate = $this->buildToCreateList($this->config['minSessions'] - $count);
                $data['toCreate'] += $toCreate;
                $this->cacheItemPool->save($item->set($data));
            }

            return $toCreate;
        });

        if (!$toCreate) {
            return 0;
        }

        $createdSessions = [];
        $exception = null;

        try {
            $createdSessions = $this->createSessions(count($toCreate));
        } catch (\Exception $exception) {
        }

        $this->config['lock']->synchronize(function () use ($toCreate, $createdSessions) {
            $item = $this->cacheItemPool->getItem($this->cacheKey);
            $data = $item->get();
            $data['queue'] = array_merge($data['queue'], $createdSessions);

            // Now that we've created the sessions, we can remove them from
            // the list of intent.
            foreach ($toCreate as $id => $time) {
                unset($data['toCreate'][$id]);
            }

            $this->cacheItemPool->save($item->set($data));
        });

        if ($exception) {
            throw $exception;
        }

        return count($toCreate);
    }
public function warmup ( ) { $ toCreate = $ this -> config [ 'lock' ] -> synchronize ( function ( ) { $ item = $ this -> cacheItemPool -> getItem ( $ this -> cacheKey ) ; $ data = ( array ) $ item -> get ( ) ? : $ this -> initialize ( ) ; $ count = $ this -> getSessionCount ( $ data ) ; $ toCreate = [ ] ; if ( $ count < $ this -> config [ 'minSessions' ] ) { $ toCreate = $ this -> buildToCreateList ( $ this -> config [ 'minSessions' ] - $ count ) ; $ data [ 'toCreate' ] += $ toCreate ; $ this -> cacheItemPool -> save ( $ item -> set ( $ data ) ) ; } return $ toCreate ; } ) ; if ( ! $ toCreate ) { return 0 ; } $ createdSessions = [ ] ; $ exception = null ; try { $ createdSessions = $ this -> createSessions ( count ( $ toCreate ) ) ; } catch ( \ Exception $ exception ) { } $ this -> config [ 'lock' ] -> synchronize ( function ( ) use ( $ toCreate , $ createdSessions ) { $ item = $ this -> cacheItemPool -> getItem ( $ this -> cacheKey ) ; $ data = $ item -> get ( ) ; $ data [ 'queue' ] = array_merge ( $ data [ 'queue' ] , $ createdSessions ) ; // Now that we've created the sessions, we can remove them from // the list of intent. foreach ( $ toCreate as $ id => $ time ) { unset ( $ data [ 'toCreate' ] [ $ id ] ) ; } $ this -> cacheItemPool -> save ( $ item -> set ( $ data ) ) ; } ) ; if ( $ exception ) { throw $ exception ; } return count ( $ toCreate ) ; }
Create enough sessions to meet the minimum session constraint.

@return int The number of sessions created and added to the queue.
Create enough sessions to meet the minimum session constraint .