duanlei0282 2010-06-12 21:15
浏览 35
已采纳

SPLFileObject是原子的吗?

I'm wondering whether methods of PHPs SPLFileObject are atomic (e.g. thread-safe) or not?

If they aren't, I'll implement my own class, which will use flock(), but is this enough? Is the flock function really thread-safe? What if the collision occurs after I fopen() the file, but before I flock() it?

  • 写回答

1条回答 默认 最新

  • dongsuishou8039 2010-06-15 20:09
    关注

    I think you're misusing the term "thread-safe." Thread saftey is (mostly) about shared resources in threaded code. PHP doesn't have threading, and file handles aren't shared resources. Files are shared resources, though. I think you're looking for the term "race condition" instead.

    What if the collision occurs after I fopen() the file, but before I flock() it?

    The same thing that would happen if you weren't using SPLFileObject. Just make sure you never open+truncate, always open+append and then truncate once you have the lock. This should be standard procedure if you're already aware of how file opening and locking race conditions work.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Python程序,深度学习,有偿私
  • ¥15 扫描枪扫条形码出现问题
  • ¥35 poi合并多个word成一个新word,原word中横版没了.
  • ¥15 【火车头采集器】搜狐娱乐这种列表页网址,怎么采集?
  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开