利用shell脚本实现异步处理http请求
http协议适合处理短时请求连接,对于处理时间比较的长的程序,使用http会造成cc攻击,服务器会陷入资源耗尽与瘫痪,比如文件格式转换等耗时操作。那么解决的办法就是采用队列的形式进行异步处理,将http请求放入一个队列中进行排队,耗时程序监听队列里如果有请求就进行处理,并将处理结果放入另一个地方,http只要定时查看有没有结果就行了,有点类似于现在的医院打印报告的流程,那么除了队列还有其他办法吗?
答案当然是有,我们还可以通过http生成shell命令,shell定时处理命令来实现这种效果。流程是这样的,比如我们要转换格式,客户上传文件后,http程序生成一个转换格式的shell脚本放入一个目录中,shell定时程序检测到目录中有新的shell脚本文件,就立即进行处理,处理完,将shell脚本文件删除,http只要定时访问结果文件夹中自己的结果文件就行了,这样就实现了shell脚本异步处理耗时操作了
比如我们要定时设置redis键值
cat ./redis-keys.txt | while read myline
do
echo ${myline}
/usr/local/bin/redis-cli -h 000.00.00.000 -p 6379 -c set ${myline} 0
done
cat ./urlget.txt | while read myline
do
echo ${myline}
curl ${myline}
sleep 100
done
filelist=`ls /home/data/`
for file in $filelist
do
echo $file
#处理耗时操作
rm -rf $file
done
网友评论0