所以我有一个websocket服务器设置并在PHP中运行(确切地说CodeIgniter,尽管这不重要......)。我想要做的是让服务器每n秒运行一次“清理”功能,如果可能的话,不使用CRON作业。基本上,我希望已经运行的websocket服务器功能检查那些在x时间内没有做任何事情的用户,并通过关闭他们的套接字自动“踢”它们。
从我在网上看到的,执行服务器操作的唯一方法是一旦收到用户输入......没有办法自动运行服务器功能......
想法?
谢谢!
答案 0 :(得分:1)
执行此操作的最佳方法可能是实现守护程序。
这是一个教程和一个很棒的课程,可以帮助您入门:http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/
我在执行类似任务的几个守护进程中使用此类。他们跑了几个星期,我没有任何麻烦。你需要注意你的内存使用情况。例如,确保没有任何永远不会被垃圾收集器杀死的匿名函数。
答案 1 :(得分:0)
我对你的“socketserver”一无所知,但它听起来像是用java写的服务器,或类似的东西,我假设你自己写了(或者至少有源代码)。你可以做的是启动一个运行类似下面的线程(这是在php中写的,因为我不太了解java)
while(true) {
$oldTime = time();
while(time()-$oldTime < 10) continue;
clean();
up();
functions();
}