#1 学海无涯
在开发中,需要做一个进度条功能,前台提交数据,后台返回进度数据。涉及同时(并发)访问两个action(这里说的并发不知道正不正确),一个action负责业务执行,其实就是一个for循环,每次执行,写入执行次数到制定文件。 另外一个action负责读取,我同时执行两个action结果发现,必须先执行完负责业务的action才能执行第二个负责读取的action.我不知道是PHP的特性,还是其他问题,所以过来提问,如果发现问题太小白,请指点。谢谢
我做了一个测试如下:
文件: CeshiController.php
代码:
class CeshiController extends BaseController{
function actionA(){
sleep(10);
echo "A";
}
function actionB(){
sleep(10);
echo "B";
}
}
然后我用浏览器访问A以及B。我发现先访问的页面执行完成之后,才执行第二个页面。
也就是说我快速访问两个页面,顺序是A,B 这样的话。A 页面执行完成之后,B 页面才执行。 A页面用了10秒,B 页面用了20秒的时间。也就是说同时访问两个页面,但是两个页面并没有同时执行。而是排队执行了。
我以为是apache配置的问题。我就单独在根目录下独立建立了两个文件,则没有发生这个问题。a.php 、b.php 两个文件的时候,快速访问a 以及b 中间相差1~2秒的时间。所以感觉没有出现这种问题。
返回到我要实现的功能上,我利用框架内的action继续处理我的正常业务。单独在根目录下建立的一个php文件负责读取,业务写入的进度。这时候进度条功能实现了。
请问这个情况是怎么回事儿。全部在框架内完成有无好的建议。谢谢啦:)
2018-09-11 18:53:53