在线等:如何使同一客户端请求的多个相同的php脚本实例同时运行?

来源:百度知道 编辑:UC知道 时间:2024/06/22 03:10:39
Apache+PHP。
有一php脚本a.php需要运行较长的时间,比如10分钟。如果在它结束之前,又从同一台PC请求同一个页面a.php,那么后打开的页面必须等待前一个页面执行结束或者关闭了这个页面时才会开始执行。
请问高手怎么样才能让同一台PC同时打开多个a.php页面并且相互不影响呢?
个人怀疑可能Apache或者PHP的配置有关。因为是在OS Commerce's e-store web page model的框架下修改的,也不排除是代码问题。
问题很急,在线等,多谢高手!
补充:我试过了你的禁止缓存的代码,也清理了IE的缓存,结果还是不行。即使升级到IE8或者IE6 SP3也一样,真是个顽症。
我抓了一下包,发现出现问题的时候IE根本没有发送HTTP请求出来;换了一台电脑后,发现一切正常。所以已经确认为IE的Bug。但我用360扫描安装了所有的补丁,还是不能解决问题。
大家可以参考一下下面的网页,和我遇到的是同样的问题:
http://topic.csdn.net/u/20090305/10/a0cdc948-7aea-43d9-97c9-74b60bdc0b24.html
http://social.microsoft.com/Forums/en-US/267/thread/01216457-69ea-4d3b-8b2f-0512af4c7376

你的写LOG和读LOG的原理是什么呢?
或者你可以提供部分文件给我,我帮你看看

正如你提供的连接显示的内容,你考虑先清空缓存,再在ShowLog的PHP里禁止缓存试试。
PHP禁止缓存:http://www.everalan.com/blog/index.php/archives/212

理论上即使有100个页面同时require application_top.php,每个页面都打开一个数据库连接,也不会出现你说的情况的,因为MYSQL和APACHE一样是支持并发的。建议你仔细分析一下你的代码。

这种情况只出现在FIREFOX中,IE下不会的。似乎FIREFOX一个URL只能同时有一个线程读取。你可以测试一下,分别用IE和FIREFOX执行以下的test.php
test.php文件:
<?php

for($i=0; $i<100; $i++){
echo $i . "<br/>";
ob_flush(); flush();
sleep(1);
}

解决办法是在URL后多加上一个时间戳,保证每次的URL都不一样,有不会影响你的代码。例如test.php?23423432, test.php?9923432 这样就能同时执行了

如果像ajax83316说的那样,你在程序里使用了耗时的独占且锁定资源(尤其是数据库)的算法,只能优化你的算法了,别无它法

补充说明,服务器可以同时为很多客户端(取决于你的服务器配置)执行一个程序(例如test.php)。像新浪的首页也许同时有10000个用户在调用。所以不会是服务器的问题。

我感觉不大可能,不过可以对一份文件复制n份,设置n个不同的文件名,然后请求不同文件执行相同程序。

如果a.php里使用了