move原子中的move_uploaded_file是什么?

时间:2014-04-05 01:53:52

标签: php atomicity

我读过PHP's website file_put_contents不是原子的。我打算用它来上传文件。

我当时想知道move_uploaded_file的原子性,但找不到任何信息。

任何帮助?

感谢。

1 个答案:

答案 0 :(得分:3)

我假设你在文件系统级别意味着原子。它取决于你的文件系统。

move_uploaded_files发生的过程基本上是:

  • 可以上传文件吗?
  • 传入两个字符串?
  • 是否上传了源文件?
  • open_basedir是否允许写入目的地?

假设所有这些都返回yes,则尝试rename。在大多数文件系统上,重命名是原子的。

如果rename失败,则尝试复制和删除。这不是原子的,因为复制需要阅读,然后有一个单独的删除。

最后,如果重命名和副本都不起作用,则会生成错误。