当两个脚本想同时使用LOCK_EX写入文件时会发生什么?

巴吉

如果PHP脚本想要执行以下操作,会发生什么?

file_put_contents("testfile", $s, FILE_APPEND | LOCK_EX);

而另一个脚本已经在同一文件上执行了相同的操作(也带有一个LOCK_EX)?

不太可能发生两个脚本要在同一毫秒内精确写入(对于<100 kB文件)的情况,但让我们想象一下它发生了。

请问file_put_contents功能察觉到它的锁定,等待10ms的说,然后重试,或将PHP脚本失败,并要写入的数据丢失?

巴尔玛

flock()在开始写入之前,这两个进程都将调用以锁定文件。第一个将获得锁定,第二个将等待直到文件被解锁。无需重试,它由操作系统自动处理。该文档没有提及超时,因此我假设没有超时。

完成写入后,第一个过程将解锁文件,然后运行第二个过程。

您一般不需要LOCK_EX,如果你使用FILE_APPEND每次对write()原子的调用都是原子的,并且在以追加模式打开文件时,文件系统确保每个进程在新文件末尾(而不是在文件打开时的EOF位置)进行写入。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当两个进程写入mmaped文件的相同部分时会发生什么?

来自分类Dev

当两个线程同时调用相同的静态方法时会发生什么?

来自分类Dev

两个SIP客户端同时登录时会发生什么

来自分类Dev

当您同时触摸两个按钮时会发生什么

来自分类Dev

当两个进程同时调用register()时会发生什么

来自分类Dev

当两个对象彼此相等时会发生什么

来自分类Dev

GCD:当两个线程想要同时在主线程上执行块时会发生什么

来自分类Dev

在Linux内核中同时发生两个中断时会发生什么

来自分类Dev

当两个信号量同时更改并且两个信号之一不能立即减少时会发生什么?

来自分类Dev

当多个进程尝试在两个不同文件系统之间转换相同文件时会发生什么?

来自分类Dev

当 Angular 2 的文件中有两个类,一个装饰器/一个类两个装饰器时会发生什么?

来自分类Dev

在Windows上写入aux文件时会发生什么?

来自分类Dev

为什么在文件中写入csv时会发生错误?

来自分类Dev

将两个分支与子模块合并时会发生什么?

来自分类Dev

当两个应用程序监视同一iBeacon区域时会发生什么?

来自分类Dev

当两个线程尝试修改/访问并发HashMap中的相同密钥时会发生什么?

来自分类Dev

当两个并发线程尝试从CopyOnWriteArrayList中删除元素时会发生什么?爪哇

来自分类Dev

当您强制退出两个磁盘之间的`mv`目录操作时会发生什么?

来自分类Dev

当两个应用程序监视同一iBeacon区域时会发生什么?

来自分类Dev

在 Swift 中,当两个线程获取并设置非线程安全属性时会发生什么?

来自分类Dev

rails:在 Gemfile 中指定两个 Web 服务器时会发生什么

来自分类Dev

当两个IPv6前缀长度相同时,会发生什么?

来自分类Dev

当表单上的两个按钮等同时实际会发生什么?

来自分类Dev

即使我没有同时使用两个界面,名称也会发生冲突

来自分类Dev

当我有两个指针指向同一个对象时会发生什么?

来自分类Dev

当两个进程侦听同一个 Berkeley/Unix [file] 套接字时会发生什么?

来自分类Dev

具有相同方法名称的两个接口,当我重写时会发生什么?

来自分类Dev

当我截断正在使用的文件时会发生什么?

来自分类Dev

当脚本src不同时会发生异常,代码有什么问题?

Related 相关文章

  1. 1

    当两个进程写入mmaped文件的相同部分时会发生什么?

  2. 2

    当两个线程同时调用相同的静态方法时会发生什么?

  3. 3

    两个SIP客户端同时登录时会发生什么

  4. 4

    当您同时触摸两个按钮时会发生什么

  5. 5

    当两个进程同时调用register()时会发生什么

  6. 6

    当两个对象彼此相等时会发生什么

  7. 7

    GCD:当两个线程想要同时在主线程上执行块时会发生什么

  8. 8

    在Linux内核中同时发生两个中断时会发生什么

  9. 9

    当两个信号量同时更改并且两个信号之一不能立即减少时会发生什么?

  10. 10

    当多个进程尝试在两个不同文件系统之间转换相同文件时会发生什么?

  11. 11

    当 Angular 2 的文件中有两个类,一个装饰器/一个类两个装饰器时会发生什么?

  12. 12

    在Windows上写入aux文件时会发生什么?

  13. 13

    为什么在文件中写入csv时会发生错误?

  14. 14

    将两个分支与子模块合并时会发生什么?

  15. 15

    当两个应用程序监视同一iBeacon区域时会发生什么?

  16. 16

    当两个线程尝试修改/访问并发HashMap中的相同密钥时会发生什么?

  17. 17

    当两个并发线程尝试从CopyOnWriteArrayList中删除元素时会发生什么?爪哇

  18. 18

    当您强制退出两个磁盘之间的`mv`目录操作时会发生什么?

  19. 19

    当两个应用程序监视同一iBeacon区域时会发生什么?

  20. 20

    在 Swift 中,当两个线程获取并设置非线程安全属性时会发生什么?

  21. 21

    rails:在 Gemfile 中指定两个 Web 服务器时会发生什么

  22. 22

    当两个IPv6前缀长度相同时,会发生什么?

  23. 23

    当表单上的两个按钮等同时实际会发生什么?

  24. 24

    即使我没有同时使用两个界面,名称也会发生冲突

  25. 25

    当我有两个指针指向同一个对象时会发生什么?

  26. 26

    当两个进程侦听同一个 Berkeley/Unix [file] 套接字时会发生什么?

  27. 27

    具有相同方法名称的两个接口,当我重写时会发生什么?

  28. 28

    当我截断正在使用的文件时会发生什么?

  29. 29

    当脚本src不同时会发生异常,代码有什么问题?

热门标签

归档