主要实现功能:linux服务器上使用php脚本做每隔10秒的定时查表任务。
当前实现方法:
php脚本进程守护工具: supervisorphp脚本逻辑:
supervisor
while(true) { // some logic code... // 查询不大的表中的特定数据并处理 sleep(10); }
1. 请问这样做会不会对服务器带来很大的压力呢?2. if 1. true, 如果会的话,压力会主要出在什么地方?3. php脚本的类似定时任务有什么更优方法实现?
学习是最好的投资!
Linux cron服务
crontab -u www -e
crontab 啊, 定时任务 用crontab 比较常用吧, 10s运行一次对服务器没啥压力啊, 又不是并发,
linux中sleep是挂起进程或是线程了,每10s检测一次的频率算很小了,不大可能给系统造成压力。定时检查在一些知名开源的项目中也很常用,尽管用就是了。单独开一个线程或是进程专门用作定时检测。
如果条件允许,最好把web服务器和这种脚本服务器分开。这样脚本服务器的效率能得到保障,不会收web请求量的影响。
有可能,要看你操作的内容,如果占用内存一直上升,但是没有释放掉,最后服务器应该会完蛋吧。。东西用完释放掉应该没问题
毫无问题.关键看你执行的是什么.
如果不sleep的话,那CPU使用率还是很高的。之前有在阿里云测试过,看过监控。CPU基本在50%左右(不过服务器配置也偏低,个人用);加上sleep,CPU基本1%以内
不过个人的感觉影响的因素,不单是CPU。比如带宽,硬盘读写,内存等均有可能。只是看业务逻辑不同,影响的因素也不同~
另建议可以用usleep,当时好像是折算后0.1秒的时候性能就区别比较大(不过具体数值忘记了,自己测吧!)
usleep
Linux cron服务
crontab 啊, 定时任务 用crontab 比较常用吧, 10s运行一次对服务器没啥压力啊, 又不是并发,
linux中sleep是挂起进程或是线程了,每10s检测一次的频率算很小了,不大可能给系统造成压力。定时检查在一些知名开源的项目中也很常用,尽管用就是了。单独开一个线程或是进程专门用作定时检测。
如果条件允许,最好把web服务器和这种脚本服务器分开。这样脚本服务器的效率能得到保障,不会收web请求量的影响。
有可能,要看你操作的内容,如果占用内存一直上升,但是没有释放掉,最后服务器应该会完蛋吧。。东西用完释放掉应该没问题
毫无问题.关键看你执行的是什么.
如果不sleep的话,那CPU使用率还是很高的。之前有在阿里云测试过,看过监控。CPU基本在50%左右(不过服务器配置也偏低,个人用);加上sleep,CPU基本1%以内
不过个人的感觉影响的因素,不单是CPU。比如带宽,硬盘读写,内存等均有可能。只是看业务逻辑不同,影响的因素也不同~