当前位置:Gxlcms > PHP教程 > php长时间执行挂起现象怎么解决?

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

时间:2021-07-01 10:21:17 帮助过:55人阅读

有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默认不启用锁定。
是不是因为一次插入数据量太大?

人气教程排行