php手册上的一句话:
注: 一个字符串变得非常巨大也没有问题,PHP 没有给字符串的大小强加实现范围,所以完全没有理由担心长字符串。 

解决方案 »

  1.   

    内存有多大'胆',string 就有多大产 -_-
      

  2.   

    小弟想把数据库的内容取出来组合一下写到文件中去,因为数据量大,以下代码老是出错,而且出错的地方不固定。小弟先用AddHTMLFileA发现有问题,写了一个AddHTMLFile,在外部打开关闭文件,可以让程序跑得更久一点,但还是会出错。
    $FullName 每次会改变。 for($i = 0 ; $i < $pagecount2  ; $i ++)
    {
    $sql = $PROFIXSQL;
    $where = " where   cp.Category_ =  " . $CateID . " order by   Name " ;
    $limit = " limit " . strval($i * $PAGESIZE ) . " , " . strval(($i + 1) * $PAGESIZE -1)  ; 
    $sql = $sql . $where . $limit; 
    // echo $sql . "<br>" ; 
    $result = mysql_query($sql);

    if($i == ($pagecount2 - 1) )
    $LastProductPageSize =  $rowcount2 % $PAGESIZE ;
    else
    $LastProductPageSize = $PAGESIZE ;

    if(!$result)   
    {
    echo "Query Error! SQL:" . $sql .   "<br>";      
    return 0;
    }

    $j = 0;

         while($row[$j] = mysql_fetch_array($result))
         {
    $j ++;
    }

    $pageno = $pagecount1 + 1 + $i;

    $FullName = substr($strFixName, 0, $nLen - 5 ) . "_" . strval($pageno)   . ".html" ;  if(!CreateHTMLFile($FullName, $strHead))
    {
    echo "CreateHTMLFile Error! " . $FullName .   "<br>";
    return 0;
    } // Create html file 
    if(!file_exists($FullName))
    {
    echo "File not exist " . $FullName ; 
    return 0;
    }

    $fp = fopen($FullName , "a+");
    if(!$fp)
    {  
    echo " file "  . $FullName . " open error" . "<br>";
    return 0;
    }
    // Append Jump row 
    $filestr = $BORDERTABLE . $RETURNLINE  .  $RETURNLINE . $BLANKLINE;
    $strTmp = GetJumpStr($pageno, $pagecount ,$rowcount,  $TinyFileName); 

    $filestr =  $filestr .  $strTmp  ;
    if(!AddHTMLFile($FullName,$fp, $filestr))
    {
    echo "AddHTMLFile Error! " . $FullName . "<br>";
    return 0;
    } $filestr =  $BLANKLINE;

    if(!AddHTMLFile($FullName,$fp, $filestr))
    {
    echo "AddHTMLFile Error! " . $FullName . "<br>";
    return 0;
    }
    // Append table tag 
    $filestr =   "<tr>". $RETURNLINE . "<td>" . $TABLECOLOR1 . $RETURNLINE . $VALIGNTOP . $RETURNLINE . "<td>" . $RETURNLINE . $TABLECOLOR2 . $RETURNLINE . $VALIGNTOP  . $RETURNLINE . "<td>" . $RETURNLINE . $TABLENOCOLOR ; 

    if(!AddHTMLFile($FullName,$fp, $filestr))
    {
    echo "AddHTMLFile Error! " . $FullName . "<br>";
    return 0;
    }

    $filestr = "";
    // Get first Col
    for($j = 0 ; $j < $LastProductPageSize  ; $j ++ )
    {

    $filestr =  $ITEMPREFIX1 . $PRODUCTLINK1 . $row[$j][1] . "-" . $row[$j][3] . "/" . $ITEMPREFIX2  . $row[$j][2] .  $ITEMSUFFIX  ;

    if(!AddHTMLFile($FullName, $fp,$filestr))
    {
    echo "AddHTMLFile Error! " . $FullName . "<br>";
    return 0;
    } } $filestr =  $COLEND . $TABLENOCOLOR;

    if(!AddHTMLFile($FullName,$fp, $filestr))
    {
    echo "AddHTMLFile Error! " . $FullName . "<br>";
    return 0;
    }

    // Get second Col
    for($j = 0 ; $j < $LastProductPageSize  ; $j ++ )
    {

    $filestr =  $ITEMPREFIX1 . $PRODUCTLINK1 . $row[$j][1] . "-" . $row[$j][3] . "/" . $ITEMPREFIX2  . $COMPAREPRICE .  $ITEMSUFFIX  ;

    if(!AddHTMLFile($FullName, $fp,$filestr))
    {
    echo "AddHTMLFile Error! " . $FullName . "<br>";
    return 0;
    }

        

    }
    $filestr =  $COLEND . $TABLENOCOLOR;

    if(!AddHTMLFile($FullName, $fp,$filestr))
    {
    echo "AddHTMLFile Error! " . $FullName . "<br>";
    return 0;
    }

    // Get third  Col
        for($j = 0 ; $j < $LastProductPageSize  ; $j ++ )
    {

    $filestr = $ITEMPREFIX1 . $PRODUCTLINK2 . $row[$j][1] . "-" . $row[$j][3] . "/" . $ITEMPREFIX2  . $REVIEWS  .  $ITEMSUFFIX  ;

    if(!AddHTMLFile($FullName, $fp,$filestr))
    {
    echo "AddHTMLFile Error! " . $FullName . "<br>";
    return 0;
    }

    }
    $filestr =  $COLEND . $TABLENOCOLOR;

    if(!AddHTMLFile($FullName,$fp, $filestr))
    {
    echo "AddHTMLFile Error! " . $FullName . "<br>";
    return 0;
    }

    $filestr = "";

    // Get fourth Col
        for($j = 0 ; $j < $LastProductPageSize  ; $j ++ )
    {

    $filestr =  $ITEMPREFIX1 . $PRODUCTLINK3 . $row[$j][1] . "-" . $row[$j][3] . "/" . $ITEMPREFIX2  . $SPEC  .  $ITEMSUFFIX  ; if(!AddHTMLFile($FullName,$fp, $filestr))
    {
    echo "AddHTMLFile Error! " . $FullName . "<br>";
    return 0;
    }
    }
    $filestr =  $COLEND . $TABLENOCOLOR;

    if(!AddHTMLFile($FullName,$fp, $filestr))
    {
    echo "AddHTMLFile Error! " . $FullName . "<br>";
    return 0;
    }
    $filestr = $TABLEEND; 
    // Foot tag 

    $filestr =  $filestr .  GetFootTag($FootStr);
    // echo "Products:" . $FullName . "<br>" ;

    if(!AddHTMLFile($FullName, $fp,$filestr))
    {
    echo "AddHTMLFile Error! " . $FullName . "<br>";
    return 0;
    }

    $filestr = "";  
    fclose($fp); // usleep(100);

    }


    function AddHTMLFile($FullName ,$fp,  $Content)
    {
    if($Content == "") 
    $Content = "<br>";
    if(!fwrite($fp, $Content ))
    {

    fclose($fp);
    echo "[AddHTMLFile]: Append file ". $FullName . " error ". "<br>";
    // echo "Append content:" .  $Content . "<br>";
    return 0 ;
    }

    return 1;
    } function AddHTMLFileA($FullName , $Content)
    {
    // Create html file 
    if(!file_exists($FullName))
    {
    echo "File not exist " . $FullName ; 
    return 0;
    }
    if($Content == "") 
    $Content = "<br>";

    $fp = fopen($FullName , "a+");
    if(!$fp)
    {  
    echo "[AddHTMLFileA]: file "  . $FullName . " open error" . "<br>";
    return 0;
    }
    if(!fwrite($fp, $Content ))
    {

    fclose($fp);
    echo "[AddHTMLFileA]: Append file ". $FullName . " error ". "<br>";
    // echo "Append content:" .  $Content . "<br>";
    return 0 ;
    }

    fclose($fp);
    return 1;
    }
      

  3.   

    应该是执行超时,如果在本地调试,你可以更改超时时间,如果在虚拟主机,刚可能是禁止用这么大的CPU资源....
      

  4.   

    应该是执行超时,如果在本地调试,你可以更改超时时间,如果在虚拟主机,刚可能是禁止用这么大的CPU资源....非常正确,因为PHP配置我无法控制,网管关掉了出错提示选项,也没通知我们,害得我改这改那调了2天,加上set_time_limit(0);  一切正常。谢谢各位。分段吧
    什么意思?等这位朋友回复就结。