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

PHP循环中进度显示以及"假死"

程序员文章站 2022-04-19 18:28:49
...
理论上程序应该运行完500次然后才显示成功,但是基本只能运行个十来次页面就开始全白(同时网页中载入的标志也消失了),就不再往下继续执行程序了
求助这种问题应该如何解决,谢谢

另外,进度方面不知道应该如何处理。再次感谢


";		}}echo "OK";?>

回复讨论(解决方案)

3秒×500= 多长时间?

不死才怪

3秒×500= 多长时间?
没有设置运行时间,不死才怪

nnd,csdn给我500还让我多发了一次……

跟运行时候太长有关系,你还第次休息了3秒

本来是一个采集再写入数据库的程序,这里只是想表达大概的意思 代码少 易看

set_time_limit吧

以下是我原程序的主要内容

$_POST["appOAuthkey"],            "user"=>$_POST["user"],            "pw"=>$_POST["pw"],            "appOAuthID"=>$_POST["appOAuthID"],            "accessToken"=>$_POST["accessToken"],            "appOAuthkey"=>$_POST["appOAuthkey"],            "lirun"=>$_POST["lirun"],            "uin"=>$_POST["uin"]        );        $db->row_update("config",$data,"id=1");        if($db->get_errno()){            alert_back("设置失败!");        }else{            alert_back("设置成功!");        }	}    $conf=$db->row_query_one("select * from config where id=1");    $data=$db->row_query("select * from data");	if($act=="scan"){		//$db->row_delete("data","");		$itemState = $_POST['itemState'];//商品状态		$PageSize = GetPageSize($itemState);//商品页数		for ($i=1; $iitemList->item;			$itemName = $item->itemName;			$itemName = iconv('utf-8', 'gb2312', $itemName);			$itemState = $item->itemState;			$itemCode = $item->itemCode;			$itemPrice = $item->itemPrice;			$db->row_insert("data",array("ProName"=>$itemName,"item"=>$itemCode,"Price"=>$itemPrice,"itemState"=>$itemState,"add_time"=>$time));			//进度信息 PageSize					}		alert_back("扫描结束,共计信息数:{$PageSize}!");	}?>价格及库存管理系统	

拍拍平台-价格及库存管理系统

系统设置
用户名:
用户密码:
uin:
appOAuthID:
appOAuthkey:
accessToken:
利润: 单位:分


商品管理
商品采集更新:


商品信息管理(共有条信息)
$val){ echo ''; $ii ++; //if ($ii>2) break;}?>
ID 商品名称 Item 价格 状态 添加时间 更新时间 操作
'.$val['id'].' '.$val['ProName']." ".$val['item'].' '.$val['Price'].' '.$status_str[$val['itemState']].' '.date("Y-m-d H:i:s",$val['add_time']).' '.date("Y-m-d H:i:s",$val['up_time']).' 删除

set_time_limit吧

加入了这个 程序能顺利运行结束(时间比较长点)

但是这个进度显示好像得运行结束了才一起显示出来。。。

php是一次计算一次输出,即使像CLI那样边计算边输出,也要不断刷屏才能实现进度条效果
进度在客户端显示,你觉得php会在服务器端计算->客户端显示->服务器端计算->客户端显示->……这样么?

如果你想要这样效果,你就要把循环拆开,客户端收到第一个数据,然后ajax向服务器发出next请求,php再计算下一个,向客户端发结果,客户端再ajax……