定时任务别光加进crontab就不管,没加文件锁,十几个进程把CPU跑满网站直接卡
新手做网站的定时任务,比如每天自动备份、自动发文章,写完脚本直接加到crontab里,跑了几天才发现,脚本没加锁,每次触发就启动一个,同时跑了十几个PHP进程,直接把服务器CPU占满。定时任务配置几个要点:第一,脚本开头加文件锁,同一时间只允许跑一个进程,别重复触发,就算上次的任务还没跑完,这次也不会启动新进程;第二,任务执行完要写日志,每次跑成功还是失败,记到单独的日志文件里,不然任务悄悄失败了,你都不知道;第三,别把任务间隔设成1分钟,比如1分钟跑一次,任务还没跑完,下一次又启动了,根据任务耗时设间隔,比如备份脚本10分钟跑完,就设成每小时跑一次;第四,别在脚本里用root权限跑,单独建个普通用户权限跑定时任务,就算脚本被攻破,也拿不到服务器最高权限。
我之前写的自动备份脚本,没加文件锁,一天跑出来二十个进程,CPU直接100%,网站都卡,加了文件锁之后,再也没出现过进程重复跑的情况。很多新手觉得定时任务加进去就完事了,根本不考虑重复执行、日志记录,结果任务要么悄悄失败,要么把服务器资源占满。花十分钟加个文件锁、写个日志,定时任务跑起来才稳,不然哪天任务崩了、资源满了,你都反应不过来。
本站源码来源于网络收集修改或者交换,甚至可能并非原创,如遇未经考证信息需持审慎态度。若有疑问,可联系本站处理。
0