我想做一个不依托于workerman的情况下做一个定时器,我的需求是这样: 我创建一个房间,在创建房间的1小时候后,删除这个房间,在依托workerman的情况下我是会做,因为workerman的服务只需要跑起来,调用timer方法就可以了,但我如果是不依赖workerman的业务是如何定时执行的呢,是要用到进程吗?还是其他,求解答
简单的方法是用crontab, 创建房间的时候在数据库里面填一个记录,房间号和创建时间, 写一个php脚本,crontab设置成每分钟跑一次, php脚本读取数据库,检查下是否有房间到一个小时了, 有的话就删除
其实方法很多,自己写定时器的话,要开守护进程,while(true)这样运行,如果项目有用到redis可以用redis的消息订阅,设置一个字段1小时过期,过期时修改数据库字段,也可以把功能改成触发型的,当调用某些接口(例如房间初始化接口)时,检查房间创建时间距今是否超过1小时,是的话修改一个标志位,这最简单,不过你都涉及到聊天了,用workerman多方便
这种精确度要求不高的,肯定是用 crontab 做啊,想什么呢。
https://wenda.workerman.net/question/4391 看看这个,我从workerman 抄的,你再抄个守护进程加上去,就可以实现了。 当然稳定性不如workerman,毕竟workerman经过了实战。
简单的方法是用crontab,
创建房间的时候在数据库里面填一个记录,房间号和创建时间,
写一个php脚本,crontab设置成每分钟跑一次,
php脚本读取数据库,检查下是否有房间到一个小时了,
有的话就删除
其实方法很多,自己写定时器的话,要开守护进程,while(true)这样运行,如果项目有用到redis可以用redis的消息订阅,设置一个字段1小时过期,过期时修改数据库字段,也可以把功能改成触发型的,当调用某些接口(例如房间初始化接口)时,检查房间创建时间距今是否超过1小时,是的话修改一个标志位,这最简单,不过你都涉及到聊天了,用workerman多方便
这种精确度要求不高的,肯定是用 crontab 做啊,想什么呢。
https://wenda.workerman.net/question/4391 看看这个,我从workerman 抄的,你再抄个守护进程加上去,就可以实现了。
当然稳定性不如workerman,毕竟workerman经过了实战。