欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php长时间执行挂起现象怎么解决?

程序员文章站 2022-04-29 11:03:05
...
有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默认不启用锁定。
是不是因为一次插入数据量太大?