php– 使用互斥锁的Linux并发脚本

php– 使用互斥锁的Linux并发脚本,第1张

概述在我的Linux服务器上,我需要同步多个脚本,用BASH和PHP编写,这样只有其中一个脚本能够启动一个系统关键的工作,这是一系列BASH / PHP命令,这些工作会搞砸由两个或多个脚本同时执行.根据我在C中使用多线程的经验,我熟悉互斥锁的概念,但是如何为在一系列不同进程中运行的脚本实现互斥锁,当然,这些脚本不是用C语言编写的?好吧,首先想到的解决方案是确保每

在我的Linux服务器上,我需要同步多个脚本,用BASH和PHP编写,这样只有其中一个脚本能够启动一个系统关键的工作,这是一系列BASH / PHP命令,这些工作会搞砸由两个或多个脚本同时执行.根据我在C中使用多线程的经验,我熟悉互斥锁的概念,但是如何为在一系列不同进程中运行的脚本实现互斥锁,当然,这些脚本不是用C语言编写的?

好吧,首先想到的解决方案是确保每个脚本最初创建一个“锁定标志”文件,让其他脚本知道该作业被“锁定”,然后在完成该作业后删除该文件.但是,正如我所看到的,文件写入和读取操作必须是完全原子的才能让这种方法以100%的概率运行,并且相同的要求将适用于任何其他同步方法.而且我很确定文件写入/读取操作不是原子的,它们至少在所有现有的linux / Unix系统中都不是原子的.

那么同步并发BASH和PHP脚本最灵活,最可靠的方法是什么?

最佳答案我不是PHP程序员,但文档说它提供了一个可以使用的便携版flock.第一个示例代码段看起来非常接近您想要的内容.试试这个:

请注意,默认情况下,flock会等到它可以获取锁定.你可以使用LOCK_EX | LOCK_NB如果要在程序的另一个副本已经运行的情况下立即退出.

使用名称“/tmp/lock.txt”可能是一个安全漏洞(我不想过于认真地决定它是否真的如此)所以你应该选择一个只能由程序写入的目录.

总结

以上是内存溢出为你收集整理的php – 使用互斥锁的Linux并发脚本全部内容,希望文章能够帮你解决php – 使用互斥锁的Linux并发脚本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:http://outofmemory.cn/yw/1047485.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)