【发布时间】:2014-09-26 11:04:24
【问题描述】:
我有一个极其简单的记录器功能:
<?php
class Logger {
public function __construct($logFile) {
$this->logFile = $logFile;
}
public function log($message) {
$message = date('c') . $message;
file_put_contents($this->logFile, $message, FILE_APPEND | LOCK_EX);
echo "it ran ";
}
}
这样称呼
$logger = new Logger('log.txt');
$logger->log("message");
echo "called the method";
使消息准确地写入文件 3 次,而不是 1 次。
代码在任何循环之外,由 echo 语句确认,只打印一次。
另外,如果我只是在调用 log 方法的地方运行 file_put_contents() 函数,它可以正常工作并且只写入一次内容。所以这可能与我的班级有关,但不知道是什么。
编辑:@Tommy:这是日志文件内容: 2014-09-26T07:24:51-04:00message2014-09-26T07:24:54-04:00message2014-09-26T07:24:54-04:00message
编辑 2:我在调用该方法后尝试使用 die() 函数,然后它确实只写了一次消息。所以我一直在代码中移动 die(),它在这行之后开始写消息 3 次:
if (isset($_POST['create_account'])) {
die;
既然它下面有一个骰子,那么进一步的代码中的内容应该无关紧要,对吧?
想知道它是否可能是某种 php 错误,这很奇怪。如果我将 die() 放在这一行之上,它会正常工作并且只写一次消息。
【问题讨论】:
-
没有什么建议/强制写3次。你能粘贴更多代码吗?
-
和上面一样,还有其他原因导致这个 - 上面的类没有任何会导致多次写入的东西
-
是的,这段代码没有任何问题。
-
删除日志文件并在执行该代码后向我们显示日志
-
同样的事情发生在我身上......并查看我的代码......但对于相同的 php 函数 file_put_contents......它增加了 3 次相同的行。 CodeVirtuoso 找到解决方案了吗?
标签: php