php写入文件会产生语法错误和内容顺序错误的输出

雅利安人

我创建了一个功能(以可读方式)将设置存储到文件中,以便以后可以通过直接编辑文件来修改设置。

我使用了这里描述的方法

$data = "<?php return ".var_export($var, true).";";
file_put_contents($filename, $data);

当没有更少的请求更改文件时,似乎工作正常,但是当有多个同时请求时,文件内容充满语法错误或内容顺序错误,有时它保持为空。

我尝试file_get_conents(..)与第三个参数LOCK_EX一起使用,并且fwrite()在使用之后,flock()但这也导致了同样的怪异行为。这是怎么回事,我该如何纠正?

雅利安人

这里的问题是部分保存使用flock()似乎无济于事,因为它只是设置咨询锁定,并且可以被此处所述的其他进程忽略

防止部分保存的唯一选择是先将数据写入临时文件,然后将其替换为临时文件。

我通过使用shell命令移动和替换原始文件来纠正此问题。

$data = "<?php return ".var_export($var, true).";";
file_put_contents($filename, $data);
exec("move tempfile ".$filename);  // PHP copy()/rename() seemed to be affected by simultaneous requests.

那些不了解这里发生了什么的人:

当多个并行运行的进程同时读取和修改同一文件时,某些进程可能会在另一个进程完成写入之前读取数据,这有时会导致将错误/不完整的数据放入文件中。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Django中使用markdown:“ safe”会产生语法错误

来自分类Dev

返回相同返回类型的对象会产生语法错误

来自分类Dev

解析localstorage对象会产生未捕获的语法错误?

来自分类Dev

PHP echo产生“解析错误:语法错误”

来自分类Dev

为什么这段代码会输出语法错误?(Python)

来自分类Dev

PHP语法错误

来自分类Dev

PHP语法错误

来自分类Dev

小python txt文件写入程序的无效语法错误

来自分类Dev

读取.wav文件会导致什么语法错误?

来自分类Dev

输出到python 3中的文件的语法错误

来自分类Dev

MYSQL PHP:更新查询会导致语法错误

来自分类Dev

在PHP中引用对象变量会引发语法错误

来自分类Dev

PHP解析错误:语法错误,文件意外结束,应为“`”

来自分类Dev

PHP-解析错误:语法错误,文件意外结束

来自分类Dev

PHP:解析错误:语法错误,文件意外结束

来自分类Dev

错误:语法错误:错误的令牌和

来自分类Dev

建立谓词产生语法错误

来自分类Dev

语法错误:文件结尾

来自分类Dev

语法错误文件操作

来自分类Dev

词汇和语法错误

来自分类Dev

解析和语法错误

来自分类Dev

解析和语法错误

来自分类Dev

附近的语法错误 , 和 )

来自分类Dev

为什么备用语法switch语句中的输出会导致语法错误

来自分类Dev

代码Php的语法错误

来自分类Dev

PHP语法错误,意外的'['

来自分类Dev

PHP标记-语法错误

来自分类Dev

PHP语法错误混淆

来自分类Dev

PHP PDO语法错误