php 挂起一个请求一直执行,php长时间执行挂起现象怎么解决?

有2个页面,a.php负责读取远程数据并存入数据库,它执行一次需要30秒以上。

b.php负责读取数据库的最新内容显示出来。

问题:当a.php还没读完时(浏览器状态栏一直显示“正在等待192.168.1.100的响应”),再手动不断刷新b.php,希望实时看到数据库的内容,可是此时b.php也会卡住,(浏览器状态栏也一直显示“正在等待192.168.1.100的响应”)。如果a.php不执行,则b.php响应很快,没有延时。

真心求解答!谢谢

回复讨论(解决方案)

set_time_limit(0) 设置脚本执行时间无上限

set_time_limit(0)是设置超时,是在还没超时期间,访问其他页面会挂起。

a.php

set_time_limit(0);

ignore_user_abort(true); //关闭页面还在执行

//code..

记得当数据都插入数据库后加个exit.

什么意思? a b 同时运行? 为什么会等待?cpu分配的时间还没到?还是在等待资源?

PHP不支持多线程,用Apache模拟多线程解决

你的数据库是不是用锁了?

你的数据库是不是用锁了? 应该是锁表了

你的数据库是不是用锁了? 应该是锁表了

当A在读取数据写入表时,表处于锁定状态,你用B读,估计是排队阶段。用ajax试试可以吧等待的效果人性化

应该是锁表了,执行a的时候可以中间usleep一下.

Mysql的锁定好像是表级锁定不支持行锁定,这样就不好办了。

不过看上去楼主没有使用锁定。因为mysql默认不启用锁定。

是不是因为一次插入数据量太大?

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值