我查了一下PHP的帮助,看到了这样一段话
benja at benja dot be (15-Apr-2003 05:45)Just for info, session_start() blocks if another PHP using the same session is still running in background. It seems it's waiting the other PHP to finish... and sometimes it can be a problem. Create 2 different sessions by setting 2 different names : session_name() solve the problem.
Benja.
看来这个问题已经被前人发现了,他说的指定两个session_name()这种解决方案,可以用吗?如果我后台有10个PHP页面在执行(用户开了10个窗口看10个帖子),岂不是要指定10个session_name()?

解决方案 »

  1.   

    我想是这样子的,在你SESSION_START()那一页,APACHE是担心你在中间会随时REGISTER变量作为SESSION变量,于是就在你这页面没有完之前先把其它页面的SESSION_START()阻塞了。
    我不知道怎么解决,我想也许在PHP.INI可以设置吧
      

  2.   

    可是,PHP.INI里面关于session的那段我已经看过好多遍了,似乎没有关于这方面的论述阿我刚才把那个测试页面改了一下,改成了这样:
    <?php
    $r = rand(1, 15);
    session_name("session".$r);
    session_start();
    $_SESSION['user_id'] = 10001;
    echo $_SESSION['user_id'];
    echo "<a href=\"a.phtml\" target=_blank>asdf</A><BR>";
    echo "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<BR>";

    ?>
    问题似乎就解决了
    但是这样也不好,我岂不是要在每个源程序里面的session_start()前面都加上这样一段代码?
      

  3.   

    不行,我发现,如果重新设置了session_name(),那么我原来的session信息也就同时消失了,根本不能这么解决我该怎么办呢?
      

  4.   

    制作自己的SESSION机制。
    我想这是一个解决方法。
      

  5.   

    可能PHP的SESSION是存为文件的形式,于是不能被同时打开,就造成了一个用户的SESSION不能同时在两个页面使用,必须是一个页面的SESSION结束了,才能让另一页的SESSION START()
    刚才我查了查,有个session_destroy()函数,建议试用。 你在你哪个运行时间长的页面,在session_start()之后,早点调用session_destroy(),看看另外一个用session_start()的页面是否早点执行