分类 开发笔记 下的文章
ChatGPT 帮我快速 PHP 订阅 Redis 连接超时错误问题
我用 PHP 脚本写了一个订阅 redis 列表的命令,但我发现跑了没多久就连接失败退出了。
报错的提示是:read error on connection to 127.0.0.1:6379
。
试了两次发现时间差不多,估计是触发了 PHP 的某个默认配置。
好在现在有了 ChatGPT,不需要去慢慢查文档了。
问了一下 ChatGPT,给出的 4 个可能原因中,第三个非常 match:
如果在读取数据时连接突然中断,可能是由于连接超时、网络中断或 Redis 服务器故障引起的。在 PHP 中,可以使用 ini_set('default_socket_timeout', -1); 来设置无限制的超时时间,以确保连接不会因为超时而关闭。
在脚本之前加上 ini_set('default_socket_timeout', -1);
再跑,果然 work 了。
查了下 php.ini 的配置,默认的时间果然是 60 秒。
自从有了 ChatGPT,Google 变得没那么重要了。。。
如果用 Google,可能我还在翻 StackOverflow 或者 php.net 寻找问题的可能原因。
如果用 Bing,可能我还在关闭 CSDN 页面上的广告。
如果用百度,可能我又要被哪个卖课的骗进去了。
现在体会到 ChatGPT 发布后,Google 为啥那么着急了。。。
如何保存微信小程序页面里的图片?
朋友昨天问我如何保存微信小程序页面里的图片,一时没想到好办法。
今天突然想起来这事,于是又琢磨了一下,发现其实非常简单。。。
方法就是在电脑上打开小程序页面,然后拖拽想要保存的图片到浏览器窗口或者微信聊天窗口(支持拖拽发图的窗口就行),然后就可以保存图片了。
因为我用的是 mac,所以只测试了 mac,Windows 不知道这个方法可不可行。
mac 下演示视频:
将本地的 HTTP Proxy 共享给阿里云服务器
国内的服务器有个蛋疼的问题:下载一些国外的依赖时非常慢甚至被墙。
比如 github 上的那些开源软件,下载速度只有十几K,甚至下不了。
再比如 packgist 至今都是被墙的,只能使用国内的镜像。
以前尝试过给服务器装个 v2ray 走代理,结果被云厂商扫描出来了,还给警告了一下。
怕被停服,不敢装了。
其实有个好办法就是使用 ssh -R
命令,将本地的代理端口共享给服务器,让服务器走你本地的代理去访问国外网站。
使用 ssh 连接服务器的时候,使用以下命令:
ssh -R 本地端口:本地主机:远程端口 用户名@远程主机
安装网站 HTTPS 证书,推荐使用 Certbot
之前一直使用 acme.sh 手动搞,非常麻烦,而且现在又被墙了,更加麻烦。
使用 Certbot,分分钟搞定,并且后续也不需要任何操作,全部自动化了,省心省力。
我服务器使用的是 Ubuntu + Nginx,在 Certbot 官网上选择一下,就可以看到专用的教程了:
根据教程,执行以下步骤:
Certbot 官网: https://certbot.eff.org/
MySQL 修改 UNIQUE 字段为非 UNIQUE 字段(直接删索引)
设计表有个字段设计错了,但本地已经有一些测试数据了,不想删表重建,又得费工夫导数据。
于是 modify 该字段,发现不生效。原来修改 unique 字段为非 unique 是要用删除索引的方法(unique 字段默认会创建索引),删除了索引,就不是 unique 了。
首先根据字段名查找关联的索引:
SHOW INDEX FROM table_name WHERE Column_name='column_name';
然后删除索引:
ALTER TABLE table_name DROP INDEX index_name;
HTML SEO meta tag
<!-- 给 google 看的 -->
<meta name="author" content="作者" />
<meta name="description" content="页面描述,不超过 155 个字符。" />
<meta name="keywords" content="关键字1, 关键字2" />
npm 淘宝 taobao 源 ssl 证书过期问题解决
很久不用 npm 了。。。
今天拉了一个新项目跑跑,结果第一步 npm install 就报错了:
$ npm install
npm ERR! code CERT_HAS_EXPIRED
npm ERR! errno CERT_HAS_EXPIRED
npm ERR! request to https://registry.npm.taobao.org/v-select2-component failed, reason: certificate has expired
原因是 certificate has expired
,也就是 SSL 证书过期了。
打开 https://registry.npm.taobao.org/ 一看,果然,不过跳过(忽略证书错误)之后,直接 301 跳转到 https://registry.npmmirror.com/ ,搜了一下,原来官方早就宣布过了。。。
以后得换了:
npm config set registry https://registry.npmmirror.com
根据客户端的主题色切换网站的 favicon
要根据客户端的主题模式切换网站的图标,你可以使用媒体查询(Media Query)来检测客户端是否启用了暗色主题。然后,你可以在不同的主题模式下加载相应的图标。以下是一个简单的例子:
1. 准备两个图标:
- 一个用于亮色主题的图标(例如,light-icon.png)
- 一个用于暗色主题的图标(例如,dark-icon.png)
Ubuntu 22.04 用 snap 安装 gitea,并配置 nginx 反向代理
今天给新开的阿里云主机(系统是 Ubuntu 22.04)安装一个私有的 git 仓库,选用 Gitea。
结果发现 apt 下没有这个软件包。想起来 ubuntu 开始用 snap 了,于是用 snap 试试。
root@ubuntu:~# snap install gitea
gitea v1.21.2 from Gitea installed
果然好使。
检查了一下,发现已经跑起来了。
ps aux | grep gitea
root 231929 1.4 9.8 1916768 171100 ? Ssl 12:45 0:03 /snap/gitea/6697/gitea web