Using multiple server types | laravel-dynamic-servers | Spatie

 SPATIE

  Laravel Dynamic Servers
==========================

spatie.be/open-source

  [Docs](https://spatie.be/docs)  [Laravel-dynamic-servers](https://spatie.be/docs/laravel-dynamic-servers/v1)  Basic-usage  Using multiple server types

 Version   v1

 Other versions for crawler [v1](https://spatie.be/docs/laravel-dynamic-servers/v1)

- [ Introduction ](https://spatie.be/docs/laravel-dynamic-servers/v1/introduction)
- [ Support us ](https://spatie.be/docs/laravel-dynamic-servers/v1/support-us)
- [ Requirements ](https://spatie.be/docs/laravel-dynamic-servers/v1/requirements)
- [ Installation &amp; setup ](https://spatie.be/docs/laravel-dynamic-servers/v1/installation-setup)
- [ Questions and issues ](https://spatie.be/docs/laravel-dynamic-servers/v1/questions-issues)
- [ Changelog ](https://spatie.be/docs/laravel-dynamic-servers/v1/changelog)
- [ About us ](https://spatie.be/docs/laravel-dynamic-servers/v1/about-us)

Basic usage
-----------

- [ Getting started ](https://spatie.be/docs/laravel-dynamic-servers/v1/basic-usage/getting-started)
- [ Configuring your first server type ](https://spatie.be/docs/laravel-dynamic-servers/v1/basic-usage/configuring-your-first-server-type)
- [ Ensuring a number of servers ](https://spatie.be/docs/laravel-dynamic-servers/v1/basic-usage/ensuring-a-number-of-servers)
- [ Rebooting servers ](https://spatie.be/docs/laravel-dynamic-servers/v1/basic-usage/rebooting-servers)
- [ Using multiple server types ](https://spatie.be/docs/laravel-dynamic-servers/v1/basic-usage/using-multiple-server-types)
- [ Manually increasing and decreasing servers ](https://spatie.be/docs/laravel-dynamic-servers/v1/basic-usage/manually-increasing-and-decreasing-servers)

Advanced usage
--------------

- [ Creating your own server provider ](https://spatie.be/docs/laravel-dynamic-servers/v1/advanced-usage/creating-your-own-server-provider)
- [ How servers are managed under the hood ](https://spatie.be/docs/laravel-dynamic-servers/v1/advanced-usage/how-servers-are-managed-under-the-hood)
- [ Dealing with erroring servers ](https://spatie.be/docs/laravel-dynamic-servers/v1/advanced-usage/dealing-with-erroring-servers)
- [ Dealing with hanging servers ](https://spatie.be/docs/laravel-dynamic-servers/v1/advanced-usage/dealing-with-hanging-servers)
- [ Fired Events ](https://spatie.be/docs/laravel-dynamic-servers/v1/advanced-usage/fired-events)
- [ Overriding actions and jobs ](https://spatie.be/docs/laravel-dynamic-servers/v1/advanced-usage/overriding-actions)
- [ Setting a server limit ](https://spatie.be/docs/laravel-dynamic-servers/v1/advanced-usage/setting-a-server-limit)

 Using multiple server types
===========================

When configuring the package, you probably will have [configured a default server type](/docs/laravel-dynamic-servers/v1/basic-usage/configuring-your-first-server-type).

The package can handle multiple server types. Here's how you can configure another server type using the `new` method.

```
$serverType = ServerType::new('big')

    /*
     *  The provider name given should match one of the providers in the
     * `providers` key of the `dynamic-servers` config file.
     */
    ->provider('up_cloud')
    ->configuration(function (Server $server) {
        /*
         * These values can be used in the server provider
         */
        return [
                // whatever you like
            ],
        ];
    });

DynamicServers::registerServerType($serverType);
```

Most methods on `DynamicServers` accept a parameter to specify a server type. When you specify a server type to any of these methods, servers of another type will not be touched.

```
use Spatie\DynamicServers\Facades\DynamicServers;

/*
 * This will ensure that 5 servers of the `default` server type will be available
 * Other server types will not be touched.
 */
DynamicServers::ensure(5)

/*
 * This will ensure that 5 servers of the `big` server type will be available
 * Other server types will not be touched.
 */
DynamicServers::ensure(3, 'big')

DynamicServers::reboot() // reboot all servers of type `default`
DynamicServers::reboot('big') // reboot all servers of type `big`

DynamicServers::increase() // add one more default server
DynamicServers::increase(type: 'big') // add one more `big` server

DynamicServers::decrease() // destroy one default server
DynamicServers::decrease(type: 'big') // destroy one `big` server
```
