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