奇怪的问题,action每次访问都自动运行两次

我检查了main.php 和Controller.php两个文件,没什么异常。

有人碰到过同样的问题吗?怎么解决?

我用yiic.bat 新建的项目,没有其他做任何修改,只在siteContraller的actionIndex里加了下面的代码




public function actionIndex()

{

    $handle = fopen('a.txt', 'a');

    fwrite($handle, "mmmmm\n");

    exit;

    $this->render('index');

}

结果访问一次,文件里会出现两条“mmmmm”。

问题很奇怪,还没有解决,大家帮忙试试。

我关闭了rewrte还是有这个问题,我在其他的action里试了,同样是写入两次,而且我把这段代码放到入口文件index.php里也是执行两次。

我在写入文件代码的后面加了exit,后面的布局和页面渲染没有执行页面是空白的没有报错,应该不会是html引起的。

我在action里写了一段往文件写内容的程序,每执行一次action就会写两条内容到文件。我用yiic新建的项目里也做了测试,也有这样的问题。是bug吗

看看你的view文件,可能是你的submitButton提交了两次

应该不是这个原因,我没有用表单提交,是直接用url访问的。

有可能你的图片src地址不存在,造成url无法访问,而进入controller

应该不是这个原因,我用yiic.bat 新建的项目,没有其他做任何修改,只在siteContraller的actionIndex里加了下面的代码




public function actionIndex()

{


    $handle = fopen('a.txt', 'a');

    fwrite($handle, "mmmmm\n");

    exit;

    $this->render('index');

}



结果访问一次,文件里会出现两条“mmmmm”。

问题很奇怪,还没有解决,大家帮忙试试。

你把浏览器打开后,把html源代码贴出来看看。

我是觉得很有可能你的css引入路径错误,或者其它路径引入错误,导致首页被连续访问。

我以前也碰到过。

或者你不要启用rewrite试试

我关闭了rewrte还是有这个问题,我在其他的action里试了,同样是写入两次,而且我把这段代码放到入口文件index.php里也是执行两次。

我在写入文件代码的后面加了exit,后面的布局和页面渲染没有执行页面是空白的没有报错,应该不会是html引起的。

不知道你有沒有啟用 Form 裡的 enableAjaxValidation, 我曾遇到類似的狀況是因為這選項的關係.

你每次把$_SERVER打印出来,看看请求的是什么URL

还有一个好办法就是用firefox访问这个请求,并打开httpfox这样的插件捕捉每一次HTTP请求,就能很清楚的观测到。

现在问题莫名的解决了 呵呵。

开始我按照qiang的方法在页面里打印$_SERVER,页面上只显示一遍,把$_SERVER写入文件还是写入两遍,两遍的内容一模一样。后来我按照hightman的方法安装了一个httpfox,安装之后没改动任何代码,请求自己就变成1次了,文件里也不再写入两次。我测试一直用的是firefox,看来问题出在浏览器上,但是具体是什么原因造成的我也不太清楚。之后我又把httpfox卸载做测试,也是正常的了。

呵呵 谢谢大家的帮助!