12 12
发新话题
打印

[已经解决的BUG] HPINDEX.PHP可能陷入死循环!

HPINDEX.PHP可能陷入死循环!

服务器配置:WIN2003 IIS + PHP4.3.2
PHP也不太熟不知道版本上有什么差异
在PHP5.05下没问题!
4.3.2下HPINDEX.PHP程序陷入死循环(猜测是)

TOP

引用:
Originally posted by Hesperus at 2005-10-29 00:13:
服务器配置:WIN2003 IIS + PHP4.3.2
PHP也不太熟不知道版本上有什么差异
在PHP5.05下没问题!
4.3.2下HPINDEX.PHP程序陷入死循环(猜测是)
我电脑上用的EasyPam(也是APACHE的),PHP就是4.3.2版的。。。。。长期做调试的,没有任何问题。。。不过IIS6对PHP的兼容性不是很好
DiY-Page作者
如有问题请发帖 勿发短消息
中国人民大学 知行二楼

TOP

不好确定是否IIS6的问题!不过 我的XPIIS5 没问题!
如果是IIS6的问题,服务器是IIS6,那也没办法了!不知道怎么解决?

TOP

引用:
Originally posted by Hesperus at 2005-10-29 21:49:
不好确定是否IIS6的问题!不过 我的XPIIS5 没问题!
如果是IIS6的问题,服务器是IIS6,那也没办法了!不知道怎么解决?
xp+iis5没有问题的话,就可以确定不是程序的原因了,是服务器的配置问题
IIS6最好配PHP5,PHP4出的时候因为还没有IIS6,所以两者的兼容性肯定是很差的。
DiY-Page作者
如有问题请发帖 勿发短消息
中国人民大学 知行二楼

TOP

引用:
原帖由 Hesperus 于 2005-10-29 00:13 发表
服务器配置:WIN2003 IIS + PHP4.3.2
PHP也不太熟不知道版本上有什么差异
在PHP5.05下没问题!
4.3.2下HPINDEX.PHP程序陷入死循环(猜测是)
我也遇到进入死循环的问题。

检查后发现好像和phpindex.php下的这一句有关:
复制内容到剪贴板
代码:
$scjs->WriteCache('if ('.time().'+'.$syschars['smartcacheupdate'].'<<?=time()?>) window.location="hpindex.php";');
updatejs.php中$syschars['smartcacheupdate']的部分,那时间没有更新,但<?=time()?>却更新。
因此造成updatejs.php中 if (xxxxx+xxx < xxxxx)的条件永远生效而循环执行window.location="hpindex.php"。


问题有两种可能性:
第一,也许是浏览器或其他原因造成updatejs.php此文件没有刷新。

第二,因为某些原因而phpindex.php没有执行到这一行:
复制内容到剪贴板
代码:
$scjs->WriteCache('if ('.time().'+'.$syschars['smartcacheupdate'].'<<?=time()?>) window.location="hpindex.php";');
感觉上是第一个可能性比较大。请问有什么办法可以强制刷新updatejs.php的吗?


这个问题一直存在,是到我完全不能使用DiY-Page。

有什么办法能够解决吗?

[ 本帖最后由 LobangKing 于 2005-12-21 11:21 编辑 ]

TOP

引用:
原帖由 LobangKing 于 2005-12-21 11:18 发表

我也遇到进入死循环的问题。

检查后发现好像和phpindex.php下的这一句有关:
[code]$scjs->WriteCache('if ('.time().'+'.$syschars['smartcacheupdate'].'<<?=time()?>) window.location=&quo ...
您分析问题的能力很强呀。这个问题早已确定,是你所说的第一个原因引起的,因为有时候浏览器缓存了updatejs.php,造成客户端与服务器端的判断不一致。

详见:
http://www.diypager.com/cn/bbs/v ... &extra=page%3D1
DiY-Page作者
如有问题请发帖 勿发短消息
中国人民大学 知行二楼

TOP

引用:
原帖由 wenshuang 于 2005-12-21 12:15 发表

您分析问题的能力很强呀。这个问题早已确定,是你所说的第一个原因引起的,因为有时候浏览器缓存了updatejs.php,造成客户端与服务器端的判断不一致。

详见:
[url]http://www.diypager.com/cn/bbs/viewthr ...
按照你的思路我作了一些修改,不晓得能不能解决这问题:

我把这一句:
复制内容到剪贴板
代码:
$t->set_var('firstjs', $func==0 ? '<script language="JavaScript" src="updatejs.php"></script>' : '');
改成:
复制内容到剪贴板
代码:
$t->set_var('firstjs', $func==0 ? '<script language="JavaScript" src="updatejs.php?'.time().'"></script>' : '');
这样的话每次index.html调用的updatejs.php就都会不一样(updatejs.php?xxxx),那么浏览器应该就找不到缓存而下载更新的updatejs.php了。

你觉得有没有帮助呢?
我要再试一段时间才知道对我有没有效。。。。

TOP

引用:
原帖由 LobangKing 于 2005-12-21 13:26 发表

按照你的思路我作了一些修改,不晓得能不能解决这问题:

我把这一句:
$t->set_var('firstjs', $func==0 ? '<script language="JavaScript" src="updatejs.php"></s ...
很好的方式!巧妙利用了 querystring 来避开浏览器的缓存。理论上应该有效果。只是这个 querystring 的随机性可以再加强些。

你的这种方式让我想起了自己一年前开发的一个东西。当时用AJAX时也遇到类似的问题,后来也是用类似的方法解决。让我查查以前的代码。。。。。。。

找到了。是这样:
复制内容到剪贴板
代码:
'post_edit_delete_succeed' => '主题删除成功,现在将转入主题列表。<script src=newtopics_xml.php?action=update&rnd='.mt_rand(0,10000).'></script><script language=javascript>parent.toolbar.dsoInventory.src='newtopics_xml.php';</script>',
如果你用 time() + mt_rand(0,10000) 效果就非常好了。

这不失为避开浏览器缓存的有效方法。不过先做一下试验。呵呵。
DiY-Page作者
如有问题请发帖 勿发短消息
中国人民大学 知行二楼

TOP

期待楼上2位大大的成功, 小弟也因这个问题... 令流量下降呢 T^T

TOP

引用:
原帖由 xdxdxd 于 2005-12-22 18:15 发表
期待楼上2位大大的成功, 小弟也因这个问题... 令流量下降呢 T^T
3.5.1版已发布,你去下载升级包吧,已经彻底解决了这个大问题.
DiY-Page作者
如有问题请发帖 勿发短消息
中国人民大学 知行二楼

TOP

 12 12
发新话题