我在A工程里面有一个定时任务c再跑一个程序d,B工程后台还有一个链接可以调用程序e,然后d运行的过程中e也运行了,造成向数据库插入两遍数据,各位大牛有什么高招对应我这个问题吗?d跟e程序基本上一样,只是在不同的工程中而已
d和e可以分别写个文件,保存是否允许的状态信息,然后读取判断另一个是否在运行。
如果你用进程同步,可以查找一下相关资料:)
d和e两个进程,通过进程同步,判断另一个进程是否在运行,如果发现另一个在运行,则不运行,否则运行。
定时任务通过什么来跑的?shell?
定时任务c,肯定是对应一个进程名称,执行e之前可以先调用下面的脚本ps -aef|grep "C_process_name"|grep -v grep|wc -l
如果已经跑了,返回1,没有,返回0,程序接收这个返回值,利用这个返回进行判断就可以避免重复插入了。
再或者可以从数据库的角度来进行限制,设置关键字段的主键。
插入数据的时候进行一下判断就可以了