[发明专利]一种多进程文件读写的方法在审
申请号: | 201910897931.9 | 申请日: | 2019-09-23 |
公开(公告)号: | CN110825708A | 公开(公告)日: | 2020-02-21 |
发明(设计)人: | 张红元 | 申请(专利权)人: | 武汉智美互联科技有限公司 |
主分类号: | G06F16/176 | 分类号: | G06F16/176 |
代理公司: | 北京汇信合知识产权代理有限公司 11335 | 代理人: | 王维新 |
地址: | 430000 湖北省武汉市东湖新技术开发区光谷大道*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 进程 文件 读写 方法 | ||
本发明公开了一种多进程文件读写的方法,包括:对原文件进行复制,建立目标文件;进行读写前,获取原文件的最近修改时间;任一进程对目标文件进行读写;完成读写后,获取原文件的最近修改时间;比对两次获取的时间;若时间一致,则将目标文件替换原文件,完成当前进程的原文件更新。本发明通过操作复制文件进行文件读写的目的,有效避免了资源独占而造成服务器宕掉的情况;每个进程都可以进行同样的操作,进程间不会互相产生不利影响,无需经历逐一排队的过程,大大提升了文件处理效率;通过对比读写前后所获取原文件的最近修改时间,可以快速地知道原文件是否正在被更新,避免直接对原文件更新,造成其他进程的更新丢失。
技术领域
本发明涉及文件读写技术领域,具体涉及一种多进程文件读写的方法。
背景技术
随着互联网技术的普及与发展,服务器经常会在同一时间内进行海量的数据请求处理,例如:秒杀一个商品,在同一时间内,服务器瞬间就会接收无数个请求,用于保存库存量的数据库文件就会被很多个进程同时进行读写。数据请求量少的时候,使用常见的文件操作方法就能轻松达到文件读写的目的。但是如果在同一时间请求量巨大的时候,就会有多个进程同时对文件进行读写。如果在没有对文件进行独占保护的情况下,直接对文件进行读写并更新,就很容易造成其他进程修改的数据丢失。那么当一个进程对文件读写并更新的时候,就需要想办法对该文件进行保护,同时也需要保证不影响其他进程对文件进行读写。
目前一般采用的方法就是当一个进程对某个文件进行读写操作时,为该文件添加文件锁,将该文件进行锁定独占,并且将其他参与该文件读写的进程队列化和人为阻塞。只有当前进程对该文件拥有最高权限,可以进行读写,其他进程只拥有读取的权限,一旦其他进程尝试写入并更新的时候就会遭到拒绝。当独占文件的进程完成读写和更新后,立刻解锁释放资源,文件就能恢复到可更改状态,其他进程才能再根据队列逐一进行文件独占,完成相应的文件读写和更新。
现有的技术是面对多进程进行文件读写的情况下,使用文件锁对文件进行锁定独占,但是在PHP(先进先出的队列化)中使用文件锁的时候,通常会不及时解锁释放独占或不解锁释放独占,导致资源产生死锁,因此服务器则会长期保持很高的cpu占用率,这样的话通常会导致服务器宕掉。同时现有技术对文件添加文件锁的时候,其他进程已经产生了队列,而且,没有对原文件进行写入操作的权限,只有上一个进程完成文件更新后,下一个进程才能恢复文件的最高权限;其处理效率低。
发明内容
针对上述问题中存在的不足之处,本发明提供一种多进程文件读写的方法,用于解决单进程独占资源而造成死锁的问题,解决多进程读写文件时相冲突及需要等待的问题。
本发明公开了一种多进程文件读写的方法,包括:
对原文件进行复制,建立目标文件;
进行读写前,获取原文件的最近修改时间;
任一进程对所述目标文件进行读写;
完成读写后,获取原文件的最近修改时间;
比对两次获取的时间;
若时间一致,则将目标文件替换原文件,完成当前进程的原文件更新。
作为本发明的进一步改进,所述对原文件进行复制,建立目标文件;包括:
创建临时文件夹,生成一个具有唯一性的随机数;
使用临时文件夹名、随机数和原文件名定义目标文件路径,将原文件复制到目标文件路径中。
作为本发明的进一步改进,在定义目标文件路径前,需清除文件缓存。
作为本发明的进一步改进,在原文件复制的过程中,若目标文件存在,则直接进行覆盖。
作为本发明的进一步改进,所述进行读写前,获取原文件的最近修改时间;包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉智美互联科技有限公司,未经武汉智美互联科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910897931.9/2.html,转载请声明来源钻瓜专利网。