php - 长时间运行的 Golang 程序和资源(文件句柄、tcp 连接等)

标签 php file networking go

我有 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/

相关文章:

javascript - 在 React Native 中使用 Fetch API 时处理无法访问的服务器

php - Json_Encode php 最后一个逗号

python - 如何将列表写入每行两个项目的文件

c - 在 C 中写入文件时添加到缓冲区的额外字符

php - 打开文件夹而没有PHP警告

Java:服务器/客户端 -> 客户端/客户端

c - C 中与网络相关的低级软件的读物、工具和库

php - 如何从mysql获取值到下拉列表?

php - 不需要 php 文件

php - 如何在 Slim 3.5 中为 Twig 添加全局变量?