# 原子操作

用于文件操作的Nette \ Utils \ SafeStram协议保证每个文件操作的原子性和隔离。

为什么它实际上好? 让我们从一个简单的例子开始,我们重复写入相同的字符串到文件,然后读取它:`

~~~

$s = str_repeat('Long String', 10000);

$counter = 1000;

while ($counter--) {

file_put_contents('soubor', $s); // write it

$readed = file_get_contents('soubor'); // read it

if ($s !== $readed) { // check it

echo 'Strings are different!';

}

}

~~~

看起来回声的字符串是不同的! 命令不能被执行。 相反是真的。 尝试在两个浏览器中同时运行此脚本。 错误几乎立即发生。

这是因为当在同一时间(即,在多个线程)重复执行时,代码是不安全的。 这是互联网上没有什么不寻常的,在那里几个人经常连接到一个网站在同一时间。 因此,确保您的应用程序可以一次处理多个线程,这是非常重要的 - 它是线程安全的,因为本机PHP函数不是。 否则,您可以预期数据丢失和奇怪的错误发生。

如何确保,像file_get_contets或fwrite的函数原子性地行为? SafeStream协议提供了一个安全的解决方案,所以我们可以通过标准的PHP函数原子操作文件。 加载Nette Framework时,协议自动可用。 之后,你只需要前缀的文件名nette.safe://:

~~~

$handle = fopen('nette.safe://test.txt', 'x'); // prefix the filename with nette.safe://

fwrite($handle, 'Nette Framework'); // for now, the data is written into a temporary file

fclose($handle); // and only now the file is renamed to test.txt

~~~

你当然可以使用所有熟悉的功能,如:

~~~

file_put_contents('nette.safe://test.txt', $content);

$ini = parse_ini_file('nette.safe://autoload.ini');

~~~

SafeStream保证:

原子性:文件作为一个整体写或根本不写。

隔离:没有人可以开始读取尚未完全写入的文件。

如果您以“a”模式(附加)写入现有文件,SafeStream将创建它的副本,只有在成功写入后,它才会将其重命名为原始名称。 因此,在此模式下写入比在其他模式下更耗资源。

php的原子操作,原子操作 · 国外PHP框架Nette官网教程 · 看云相关推荐

  1. php实现国外邮箱,发送电子邮件 · 国外PHP框架Nette官网教程 · 看云

    # 发送电子邮件 几乎每个Web应用程序都需要发送电子邮件,无论是简报还是订单确认. 这就是为什么Nette Framework提供必要的工具. 本教程将向您介绍如何: **创建电子邮件 发送电子邮件 ...

  2. 基础框架 Spring官网依赖下载

    基础框架 Spring官网依赖下载 1.简介说明 官网地址:https://spring.io/ https://spring.io/ projects -> spring-framework ...

  3. (附源码)基于vue框架潮牌官网设计与实现 毕业设计010955

    摘 要 随着社会的发展,计算机的优势和普及使得潮牌官网的开发成为必需.潮牌官网主要是借助计算机,通过对首页.站点管理(轮播图.公告栏)用户管理(管理员.注册用户)内容管理(潮流资讯.资讯分类)商城管理 ...

  4. 基于vue框架潮牌官网设计与实现毕业设计源码010955

    摘  要 随着社会的发展,计算机的优势和普及使得潮牌官网的开发成为必需.潮牌官网主要是借助计算机,通过对首页.站点管理(轮播图.公告栏)用户管理(管理员.注册用户)内容管理(潮流资讯.资讯分类)商城管 ...

  5. (附源码)基于vue框架潮牌官网设计与实现 毕业设计010955

    摘 要 随着社会的发展,计算机的优势和普及使得潮牌官网的开发成为必需.潮牌官网主要是借助计算机,通过对首页.站点管理(轮播图.公告栏)用户管理(管理员.注册用户)内容管理(潮流资讯.资讯分类)商城管理 ...

  6. (附源码)基于vue框架潮牌官网设计与实现 毕业设计 010955

    摘  要 随着社会的发展,计算机的优势和普及使得潮牌官网的开发成为必需.潮牌官网主要是借助计算机,通过对首页.站点管理(轮播图.公告栏)用户管理(管理员.注册用户)内容管理(潮流资讯.资讯分类)商城管 ...

  7. 爆肝1个多月,严选10大热门静态博客框架,官方文档、教学视频、经典案例、热门插件一应俱全,强烈建议收藏

    [文章编号 t001] 凌晨 12 点,我有一位朋友,在电话里,气愤地说他的博客文章又被平台删掉了. 我很好奇为什么,原来是他在某平台发布了一篇技术类原创文章,读者都比较喜欢.后来,他把这篇文章转发到 ...

  8. python什么框架写游戏好_免root修改器框架,免root框架大全,游戏框架免root:《游戏框架》 用python做游戏用什么框架-南开游戏网...

    <游戏框架> 用python做游戏用什么框架 2020-11-25 17:37:36 广告 游戏作为一种分类框架 一个好的网计作品就必然有一个号的网页,那么我们来分析一下,在网页设计过程中 ...

  9. php phalcon 安装,Phalcon框架安装与使用教程介绍

    Phalcon是一款php中国外非常的流程的框架了,但在国内Phalcon框架还不怎么样了,小编今天来为各位介绍Phalcon框架安装与使用教程,希望下文可以帮助到各位. linux服务器安装phal ...

最新文章

  1. C - Multiplication Table CodeForces - 448D
  2. 操作系统课程设计 内核模块
  3. 【转】校园网综合布线系统设计方案
  4. usb 系统消息_4. Autoware 系统框架概揽
  5. 常用Python代码
  6. 音视频技术开发周刊 | 187
  7. wikioi 1163 訪问艺术馆 树形dp
  8. 【英语学习】【English L06】U05 Appointments L2 I'd like to make an airport shuttle service reservation
  9. 从source folder 下将其所有子文件夹的*.* 文件拷贝到 target folder (不拷贝文件夹名仅拷贝文件)...
  10. keras中无法用save保存模型的问题
  11. LQR控制算法及其仿真实现
  12. android电话记录仪,零费用变身记录仪 安卓手机探索改造
  13. 如何突破思维局限去思考世界,去读读以下三个理论
  14. 服务请求2XX、5XX等错误具体是什么
  15. [C语言]逆序一个字符串的内容
  16. 公众号开发精品教程(1)——绪论及环境搭建
  17. 索尼的hlg是什么_索尼的HLG使用方法
  18. [统计学教程] 第二章 统计调查
  19. 轮转图片显示(JS)
  20. 华为思科设备NTP配置

热门文章

  1. sqljdbc4.jar和sqljdbc.jar下载
  2. 01-Intellij IDEA搭建SSM(SpringMVC+Spring+Mybatis+Maven)框架(上)
  3. linux 命令:ping、fping、gping、hping3、tracert、traceroute
  4. 安装rhel-server-7.2系统
  5. 用python一键去除图片、PDF水印
  6. stack unwinding
  7. linux安全之服务安全
  8. linux基本安全防护
  9. 大数据时代,Java还行吗?
  10. CCC产品认证的标准