2
我想知道PHP的SPLFileObject的方法是否是原子的(例如线程安全的)?SPLFileObject是否为原子?
如果不是,我将实现我自己的类,将使用flock()
,但是这还不够吗?羊群函数真的是线程安全的吗?如果发生碰撞后我该怎么办?fopen()
该文件,但之前我flock()
呢?
我想知道PHP的SPLFileObject的方法是否是原子的(例如线程安全的)?SPLFileObject是否为原子?
如果不是,我将实现我自己的类,将使用flock()
,但是这还不够吗?羊群函数真的是线程安全的吗?如果发生碰撞后我该怎么办?fopen()
该文件,但之前我flock()
呢?
我想你误用术语“线程安全的。”线程安全(主要)是线程代码中的共享资源。 PHP没有线程,文件句柄不是共享资源。不过,文件是共享资源。我想你正在寻找术语“race condition”。
如果发生碰撞后我怎么办我
fopen()
这个文件,但之前我flock()
呢?
如果不使用SPLFileObject,会发生同样的情况。只要确保你永远不会打开+ truncate,总是打开+ append,然后在锁定后截断。如果您已经意识到文件打开和锁定竞争条件如何工作,这应该是标准程序。