8. Go database/sql 教程

说明:内容来源于Go database/sql tutorial,通过谷歌翻译完成。文档翻译成中文后,很多意思会被语言本身造成误解,请查看英文原文。

在Go中使用SQL或类SQL数据库的惯用方法是通过 database/sql 包。 它为面向行的数据库提供了轻量级的接口。 这个网站对最常见的方面如何使用提供一个参考。

为什么需要这样?软件包的文档告诉你所有操作,但它并没有告诉你如何使用这个软件包。我们中的许多人发现自己希望能够快速参考和“入门”的方式来讲述故事而不是列举事实。欢迎贡献,请在这里提交请求。

1、概观

在Go中访问数据库,需要使用sql.DB类型。你可以使用此类型创建语句和事务,执行查询和获取结果。

你应该知道的第一件事是,一个sql.DB不是一个数据库连接。 它也不是对任何一个特定数据库软件的概念如数据库或模式的映射。它是一个接口的抽象和数据库存在,很可能就像本地文件一样多样化,通过网络连接,内存或进程访问。

Read More

7. PHP扩展cURL执行中途无响应

今天跑脚本遇到一个奇怪的问题,就是cURL请求到后期会出现程序阻塞卡死,无异常无响应,一直挂起,脚本也不会自动结束。跟对方沟通后说,“哥们儿,是不是你们的程序有问题啊,这边研发排查了,说12点30左右没有收到你们的请求。然后我自己用网上的json工具请求了,一下就通过了”。是不是很尴尬,关键是根本不知道为什么。然后就是不停的尝试重跑脚本,偶尔有些脚本就跑过了,但好景不长,随时都可能出现无效的时候。一直看,请求一开始都是能正常完成的,越往后执行时间也变得逐渐增长,然后就可能变成死连接。就想到,肯定是cURL发送的请求有的无响应失效了,已经成僵尸连接,还一直阻塞脚本,导致资源一直存在,但是并不能继续使用。

找了各种资料,还想尝试写一个类似定时器的定西,如果脚本执行超过1分钟,则强制丢弃掉该cURL链接。不知道PHP怎么实现这样的需求,还犹豫要不要用go来实现。涉及到json,xml等,用go毕竟没有PHP方便,就去手册阅读cURL的内容,企图找到一点有用的东西。而且cURL命令行工具是有重试功能的,猜想扩展肯定也有。但是该如何配置呢?

Read More