?>
这时候屏幕上居然打印出了
‘finish’,这样就证明析构函数确实是被执行到了。
百思不得其解之后,开始上网找资料,看到一位朋友些的析构函数中用到了
error_log 并被
执行了,和我用法不同的是他并没有指定
error_log 的文件,而是到默认的 log 文件,于是
我模拟了一下,又修改了我的程序:
代码如下
:
<?php
public function _log ($str) {
error_log($str . "\n");
error_log($str . "\n", 3, './log.log');
}
?>
我发现 log.log 中仍然之后 start,没有 finish。
而
E:\AppServ\Apache2.2\logs\error.log(我的 apache 配置的默认的 log 日志文件)真的有 start
和
finish。
奇怪的问题,想不通,于是去群里面问了下,群里的朋友要么让我检查语法错误,要么检
查文件权限,我确定这两个没有任何问题。
我说
“windows 系统,不存在权限问题,肯定不是这个引起的”
一个群友说:
“windos 系统,不解释!”
我说:
“这肯定和系统没关系,我怀疑是 apache 的问题。”
于是我把
_log 还原了一下,到 linux+nginx 的虚拟机上跑了一下。
代码如下
:
<?php
public function _log ($str) {
error_log($str . "\n", 3, './log.log');
}
?>
log.log 中成功写入了 start 和 finish。
这让我更加怀疑我的判断:
apache 导致的
于是折腾了一个小时,在服务器上装了
apache 并运行了一下文件,还是同样的结果,finish
并没有成功写入。
这时候一个同事跟我说,你写绝对路径试试看,于是我又修改了一个
_log
代码如下
:
<?php
public function _log ($str) {
error_log($str . "\n", 3, '/var/www/apache/log.log');
}
?>
再观察一下,成功写入
“finish”,激动啊,终于找到问题了,我又修改了一下程序
代码如下
:
<?php
public function __construct(){