main.lua 1.5 KB
local skynet = require "skynet"

local max_client = tonumber(skynet.getenv("max_client"))
local max_queue = tonumber(skynet.getenv("max_queue"))
local work_count = tonumber(skynet.getenv("thread"))
local use_logd = tonumber(skynet.getenv("logd"))

skynet.start(function()
	print("Server start")
	skynet.newservice("debug_console", tonumber(skynet.getenv("debug_port")))


	-- 启动redis
	for i = 1, work_count do
		local redisd = skynet.newservice("services/redisd", i)
		skynet.call(redisd, "lua", "open", {
			redishost = skynet.getenv("redis_host"),
			redisport = tonumber(skynet.getenv("redis_port")),
			redisdb = tonumber(skynet.getenv("redis_db")),
			auth = skynet.getenv("redis_auth")
		})
	end

	-- 启动mysql
	for i = 1, work_count do
		local redisd = skynet.newservice("services/mysqld", i)
		skynet.call(redisd, "lua", "open", {
			host = skynet.getenv("mysql_host"),
			port = tonumber(skynet.getenv("mysql_port")),
			user = skynet.getenv("mysql_user"),
			pwd = skynet.getenv("mysql_password"),
		})
	end

	--启动log
	if use_logd == 1 then
		for i = 1, work_count * 2 do
			local logd = skynet.newservice("services/logd", i)
			skynet.call(logd, "lua", "open")
		end
	end

	local httpd = skynet.newservice("services/httpweb", tonumber(skynet.getenv("httpweb_port")))
	local watchdog = skynet.newservice("services/watchdog", max_client)


	skynet.call(watchdog, "lua", "start", {
		port = tonumber(skynet.getenv("server_port")),
		maxclient = max_client + max_queue + 10,
		httpd = httpd,
	})

	skynet.exit()
end)