oliverde8 / mp-dedicated-server-bundle
一个创建简单json api并带有应用缓存的包,简化了对专用服务器信息的访问
Requires
- php: >=5.3.3
- doctrine/common: 2.4.*
- doctrine/doctrine-cache-bundle: ~1.0
- kitpages/semaphore-bundle: ~1.4
- manialib/formatting: 4.0.*@dev
- maniaplanet/dedicated-server-api: 4.0.*
- symfony/symfony: 2.6.*
This package is auto-updated.
Last update: 2024-09-16 02:41:15 UTC
README
一个创建简单json api并带有应用缓存的包,简化了对专用服务器信息的访问。
它还有一些内置的块,可用于您的网站
您可能出于以下两个原因使用它;
- 作为一个中间API来获取服务器信息。因为这个缓存了信息,所以您不必担心影响专用服务器
- 为了构建您的网站,展示关于您服务器的信息。
此包包含一个jQuery插件,可以使您轻松地将服务器信息显示在任何网页上。(查看演示页面)
## 安装 您当然需要一个工作的symfony安装;
### 依赖关系 首先,如果尚未完成,我们需要向我们的安装中添加doctrine cache。首先将其添加到您的composer
"doctrine/doctrine-cache-bundle": "~1.0",
您还需要在AppKernel中激活这个包
new \Doctrine\Bundle\DoctrineCacheBundle\DoctrineCacheBundle(),
new \Kitpages\SemaphoreBundle\KitpagesSemaphoreBundle(),
您需要检查monolog包是否已激活
Symfony\Bundle\MonologBundle\MonologBundle()
### 安装包 将此添加到您的composer文件
"oliverde8/mp-dedicated-server-bundle": "dev-master"
一旦开发的第一阶段完成,将添加版本号以提供更好的支持
您还需要将其添加到AppKernel.php中
new oliverde8\MPDedicatedServerBundle\oliverde8MPDedicatedServerBundle(),
我们还需要定义路由,您可以将前缀更改为您希望的任何内容
oliverde8_mp_dedicated_server:
resource: "@oliverde8MPDedicatedServerBundle/Resources/config/routing.yml"
prefix: /mp/dedicated/api/
配置
编辑config.yml并在其中添加以下内容
#Maniaplanet Dedicated seever configuration
oliverde8_mp_dedicated_server:
servers :
login:
name : "My super server"
host : "127.0.0.1"
port : "5001"
user : "SuperAdmin"
password : "SuperAdmin"
login_2:
name : "My super server #2"
host : "127.0.0.2"
port : "5002"
user : "SuperAdmin"
password : "SuperAdmin"
cache:
info_timeout: 60
map_timeout: 360
map_retry_timeout: 60
chat_timeout: 10
您可以根据需要添加任意数量的服务器,如果您只有一个服务器,您可以删除配置中的第二个。
如您所见,您还可以配置缓存ttl时间。更高的ttl值意味着网站将更少地连接到专用服务器。较低的值可能会导致延迟。
您还需要设置一个要使用的缓存
如果您之前未设置缓存提供程序,请将此添加到文件末尾。
doctrine_cache:
providers:
oliverde8_mp_dedicated_server__info:
type: file_system
namespace: info_cache
我们还需要设置kitpages信号量设置。
kitpages_semaphore:
sleep_time_microseconds: 100000
dead_lock_microseconds: 30000000
锁可以防止在两个用户都跳过缓存的情况下,同时连接到专用服务器。第一个获取信号量的将进行调用,而另一个则需要等待。
完成安装
现在只需运行composer update,它应该会自动完成。
演示
为了检查一切是否正常工作,您可以使用演示页面。为此,我们需要添加一个路由。我们可以将其添加到生产或开发环境中。因此,将其添加到routing_dev.yml中
# oliverde8MPDedicatedServerBundle demo routes (to be removed)
oliverde8_mp_dedicated_server_demo:
path: /demo/{login}
defaults: { _controller: oliverde8MPDedicatedServerBundle:Demo:serverInfo, login: _ }
我们还需要定义演示的资产。在config.yml中找到# Assetic Configuration
部分,并将oliverde8MPDedicatedServerBundle
添加到包列表中。它应该看起来像这样
assetic:
debug: "%kernel.debug%"
use_controller: false
bundles: [ oliverde8MPDedicatedServerBundle ]
您应该已经准备好了。
检查演示页面以查看一切是否正常工作
app_dev.php/demo
关于演示
尽管我称之为演示,但如果您不想花费时间构建一个显示服务器信息的网站,您也可以使用这个页面。我将继续努力使其更易于显示并具有所有必需的功能。
当然,您需要更改路由参数,以便在具有更友好URL的生产环境中访问。
访问API
您可以从以下URL访问API
/mp/dedicated/api/<login>/info.json
/mp/dedicated/api/<login>/maps.json
/mp/dedicated/api/<login>/chat.json
关于API和缓存的更多信息
目前,该API仅收集服务器信息。这基本上包括以下信息
- 服务器选项
- 服务器名称
- 服务器注释
- 游戏模式
- 运行环境
- ladderServerLimitMax
- ...
- 玩家列表
- 昵称
- 登录
- ...
- 观众列表
- 当前地图
- 地图列表
- 目前缺少一些地图信息。
- 聊天行
默认情况下,为了尽可能快地收集数据,服务器选项、玩家列表和当前地图每分钟更新一次。
另一方面,地图列表每小时检索一次。
聊天行每10秒检索一次。当然,您可以进行配置。
使用已安装版本
如果您获得已安装的版本,则需要编辑配置以添加自己的服务器
在app/config.yml中找到以下内容
#Maniaplanet Dedicated seever configuration
oliverde8_mp_dedicated_server:
servers :
在这里,您需要逐个设置每个服务器。默认情况下,有2个示例配置。
完成后,如果您在Windows上,请删除app/cache目录;在Linux上,只需使用app/console cache:clear --env="prod"即可
然后,在浏览器中打开web目录。
更多信息
如果您查看代码,您会看到我所说的登录在该代码中并未用于该目的,实际上它只是一个识别服务器的键。您也可以使用其他内容。
待办事项
此包仍在开发中,这就是为什么还没有发布的原因。
- 清理代码
- 注释代码
- 向jQuery插件添加事件和钩子
- 使jQuery插件更可配置
- 将缺少的数据添加到API返回的JSON中?等待请求