利用shell脚本实现异步处理http请求

利用shell脚本实现异步处理http请求

利用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

再比如说我们要定时爬出url网页

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

那么后端http语言比如php就可以直接在指定目录下生产脚本让shell直接执行即可


{{collectdata}}

网友评论0