我有 PHP 背景,我对如何安全地使用 Golang 资源感到有点困惑。我主要担心的是,在 web 上下文中,使用 PHP,脚本通常是短暂的(HTTP 请求/响应生命周期),但使用 Golang,它们应该永远运行(因为 Golang 程序充当 Web 服务器和 Web同时申请)。
所以,在处理数据库连接、日志文件时,我经常看到应该打开一次,而不是每个请求都打开,这是有道理的。然而,这样做有多稳定?
例如,如果我打开一个数据库连接,我如何确定它不会在某个时候中断? (如果数据库出于某种原因决定终止它,或者如果我的机器失去互联网访问权限,那么当我稍后获得互联网访问权限时,连接会再次有效吗?)对于日志文件也是如此,对于 PHP 来说,系统管理员不是问题设置日志轮换,但是在 Golang 中,我认为它会破坏文件句柄(如果程序不知道这一点)?
我真的很想以 Golang 的方式工作,而不是为每个请求打开/关闭这些资源,但我不确定这样做的“安全”方式是什么,对此有什么建议吗?或者是否有解决这些问题的内置功能?
最佳答案
在 Go 中,有内置的包将以 Go 惯用的方式处理日志文件和数据库。
它们是:
在 Go 中,与任何可以创建长时间运行的守护进程的语言一样,错误检查和错误处理非常重要。
关于php - 长时间运行的 Golang 程序和资源(文件句柄、tcp 连接等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40134614/