Home > Backend Development > PHP Tutorial > php长时间执行挂起现象怎么解决?

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

WBOY
Release: 2016-06-23 14:27:42
Original
1705 people have browsed it

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

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template