请问 PHP 里 sleep 能不能 sleep 5min?

2019-04-22 09:19:52 +08:00
 AZZERO

我现在想实现一个功能,功能是这样的:

用户在关注微信服务号 5 分钟后 ,判断他有没有在服务号的 h5 网页里付款, 如果没有付款,就在服务号里自动发送一条客服提醒消息给这个用户,催促他行动

现在有一个 php 库叫 easywechat,当用户在服务号触发各种行为的时候,很容易去实时自动回复,

但我如果想五分钟后回复,是不是用 php 的 sleep 5min 来暂缓执行发送客服消息的命令吗 但这样如果多个用户同时进来,会不会服务器内存爆掉,

还是说要把用户的 openid 存到数据库里,再做,但是这样太复杂了,作为计算机二级代码水平的我来说,有点困难


easywechat 文档: https://www.easywechat.com/docs/4.1/official-account/messages

2975 次点击
所在节点    问与答
24 条回复
ferock
2019-04-22 10:26:20 +08:00
5 分钟以后给用户公众号里推送消息本身就不允许… 除非用户和你主动交互
keepeye
2019-04-22 10:28:08 +08:00
1. 你直接在请求中 sleep,等于这个请求一直无法结束直到超时。
2. php 是多进程处理请求,一个请求进来到结束过程中一直独占一个进程,那么很快所有进程都被 sleep 阻塞导致无法处理新的请求。
3. web 中不要用 sleep,你可以把这个用户 openid 随便记到文件、redis 或者数据库中,另外单独写一个脚本用 cli 模式去轮询处理,cli 下你随便 sleep
phpcxy
2019-04-22 10:31:15 +08:00
延时队列,5 分钟后用客服消息接口发消息给用户。
ashin
2019-04-22 14:47:59 +08:00
队列复杂就用 crontab 扫啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/557368

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX