理论上程序应该运行完500次然后才显示成功,但是基本只能运行个十来次页面就开始全白(同时网页中载入的标志也消失了),就不再往下继续执行程序了
求助这种问题应该如何解决,谢谢另外,进度方面不知道应该如何处理。再次感谢
<?PHP
for ($i=1;$i<500;$i++){
file_put_contents("{i}.txt",$i);
sleep(3);
$s = $i/100;
if($s==ceil($s)) {
$s = $i/500;
echo "进度:{$s}<BR>";
}
}
echo "OK";
?>

解决方案 »

  1.   

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

  2.   

    以下是我原程序的主要内容
    <?php 
    require_once("config.php");
    session_start();

    if($_SESSION['admin']!="ok"){
    header("Location: login.php");
    exit;
    }
        $_GET['act']?$act=$_GET['act']:$act="view";
        if(!in_array($act,array("save","scan","view"))){
            $act="view";
        }
    /* 保存后台设置 */
    if($act=="save"){
    $data=array(
                "appOAuthkey"=>$_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; $i<=$PageSize; $i++) {
    $htm = GetItemList($itemState,$i);
    $xml = simplexml_load_string($htm);
    $item = $xml->itemList->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}!");
    }
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>价格及库存管理系统</title>
    <link rel="shortcut icon" href="favicon.ico" />
    <link href="all.css" rel="stylesheet" type="text/css" /></head>
    <body>
    <div style="float:right;padding:10px;"><a href="login.php?act=logout">注销登录</a></div>
    <h1 style="color:red;text-align:center;line-height:40px;">拍拍平台-价格及库存管理系统</h1>
    <form action="?act=save" method="post">
    <table border="0" style="width:98%;" cellpadding="0" cellspacing="0" >
    <tr class="tit"><td colspan="2">系统设置</td></tr>
    <tr><td>用户名:</td><td> <input class="input" type="text" name="user" value="<?php echo $conf['user'];?>"></td></tr>
    <tr><td>用户密码:</td><td> <input class="input" type="password" name="pw" value="<?php echo $conf['pw'];?>"></td></tr>
    <tr><td>uin:</td><td> <input class="input" type="text" name="uin" value="<?php echo $conf['uin'];?>"></td></tr>
    <tr><td>appOAuthID:</td><td> <input class="input" type="text" name="appOAuthID" value="<?php echo $conf['appOAuthID'];?>"></td></tr>
    <tr><td>appOAuthkey:</td><td> <input class="input" type="text" name="appOAuthkey" value="<?php echo $conf['appOAuthkey'];?>"></td></tr>
    <tr><td>accessToken:</td><td> <input class="input" type="text" name="accessToken" value="<?php echo $conf['accessToken'];?>"></td></tr>
    <tr><td>利润:</td><td> <input class="input" type="text" name="lirun" value="<?php echo $conf['lirun'];?>">&nbsp;单位:分</td></tr>
    <tr><td></td><td><button type="submit">设置</button><button type="reset">重置</button></td></tr>
    </table></form><br/><br />

    <table border="0" style="width:98%;" cellpadding="0" cellspacing="0" >
    <tr class="tit"><td colspan="3">商品管理</td></tr>
    <form action="?act=scan" method="post">
    <tr>
    <td style="width: 15%;">商品采集更新:</td>
    <td>

    <select name="itemState" style="width:210px;">
    <?php
         foreach($itemStates as $k=>$v){
             echo '<option value="'.$k.'">'.$v.'</option>';
         } 
    ?>
    </select>
    </td>
    <td>
    <button type="submit">采集更新数据</button>&nbsp;&nbsp;
    </td>  
    </tr>
    </form>
    </table>
    <br /><br />
    <table border="0" style="width:98%;" cellpadding="0" cellspacing="0" >
    <tr class="tit"><td>商品信息管理(共有<?php echo count($data);?>条信息)</td></tr>
    <tr><td>
        <table style="width: 98%;"><tr class="tit1"><td>ID</td><td>商品名称</td><td>Item</td><td>价格</td><td>状态</td><td>添加时间</td><td>更新时间</td><td>操作</td></tr><?php
        
    $ii=0;
    foreach($data as $key=>$val){
            echo '<tr><td>'.$val['id'].'</td><td>'.$val['ProName']."</td><td><a href=http://auction1.paipai.com/".$val['item']." target=_blank>".$val['item'].'</a></td><td>'.$val['Price'].'</td><td>'.$status_str[$val['itemState']].'</td><td>'.date("Y-m-d H:i:s",$val['add_time']).'</td><td>'.date("Y-m-d H:i:s",$val['up_time']).'</td><td><a href="?act=del&id='.$val['id'].'">删除</a></td></tr>';
    $ii ++;
    //if ($ii>2) break;
    }
    ?>    </table>
    </td></tr>
    </table><script type="text/javascript">setTimeout("del_ifr()",5000);
    function del_ifr(){document.getElementById("ifr").innerHTML='';}
    </script>
    </body></html>
      

  3.   

    php是一次计算一次输出,即使像CLI那样边计算边输出,也要不断刷屏才能实现进度条效果
    进度在客户端显示,你觉得php会在服务器端计算->客户端显示->服务器端计算->客户端显示->……这样么?如果你想要这样效果,你就要把循环拆开,客户端收到第一个数据,然后ajax向服务器发出next请求,php再计算下一个,向客户端发结果,客户端再ajax……