我有一个我无法理解的问题。
该问题仅出现在 Opera 11.50 浏览器上。我只是简单地写入文件功能。
fopen, LOCK_EX, fputs, LOCK_UN, fclose
.
当我正常打开页面时,一切正常。但是当我重新加载页面时,字符串会多次写入文件(2 次,有时 3 次)。我检查过,函数只触发一次,并且回显返回正确的字符串。
同样在刷新时,Opera 会忽略 php 会话变量和 cookie。当然,我在会话开始之前使用缓冲区。
对于任何其他浏览器,不会出现此问题。
我检查了 cookie 和浏览器设置。也重装了浏览器。在新下载并安装了 Opera 11.50 的第二台 PC 上也是同样的问题。
有任何想法吗?
ps:我阅读了这个相关主题,但我没有在那里找到我的问题的答案。
有一些代码:
if (!isset($_SESSION['foo']) && ($check4 === false) && !isset($_COOKIE['bar'])) {
echo "test!";
$fileHandler = fopen(MASTER_PATH . "/data/logs/loger.txt", "ab");
flock($fileHandler, LOCK_EX);
fputs($fileHandler, "What?!");
flock($fileHandler, LOCK_UN);
fclose($fileHandler);
$_SESSION['foo'] = true;
$check4 = true;
setcookie("bar");
}
正常进入页面时一切正常。重新加载时回显“测试!” 没有运行,但在文件中出现两个条目“什么?!”。只有这个函数有输出到那个文件。