代码之家  ›  专栏  ›  技术社区  ›  Drew

PHP生成XML,随机超时

  •  2
  • Drew  · 技术社区  · 17 年前

    我不知道。这会导致看似随机的超时。这些反过来会破坏我正在加载的闪存。以前有人见过这样的东西吗?

    <?php
    require_once("../includes/class.database.php");
    require_once("../includes/dbConnectInfo.inc");
    require_once("../includes/functions.php");
    
    include("../includes/conn.php");
    
    $cat = $_GET['category'];
    $result = mysql_query("SELECT * FROM media WHERE related_page_id=4 && type='copy' ORDER BY id ASC LIMIT 6");
    
    $media = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n";
    $media .= "<content>\n";
    while($row = mysql_fetch_array($result)) {
        $media .="<member>\n";
        $body = $row[copy];
    
        if($row[title] == "") {
            $media .= "<title><![CDATA[";
            $media .= "Team";
            $media .="]]></title>\n";
        } elseif ($row['path']=="") {
            $name = explode("/",$row[title],2);
    
            $media .= "<name><![CDATA[";
            $media .= $name[0];
            $media .="]]></name>\n";
    
            $media .= "<job><![CDATA[";
            $media .= $name[1];
            $media .="]]></job>\n";
        } 
    
        if($body !="") {
            $media .="<bio><![CDATA[";
            $media .= $body;
            $media .= "]]></bio>\n";
        }
    
        $something = $row['id'];
        $result1 = mysql_query("SELECT * FROM media WHERE assets='$something'");
        $media .= "<images>";
        while($row1 = mysql_fetch_array($result1)) {
            $img = explode("/",$row1[path],2);
            $media .= "<image url='$img[1]' />";
        }
        $media .= "</images>\n";
        $media .="</member>\n";
    }   
    $media .= "</content>";
    echo $media;
    ?>
    
    2 回复  |  直到 9 年前
        1
  •  3
  •   Thomas Owens    17 年前

    set_time_limit(0); 对代码的修改?我通常在include语句下面的长执行代码中添加这一行。

    既然这样做有效,让我详细说明一下。

    默认情况下,PHP脚本设置为只执行这么长时间。我相信安装PHP时的限制是30秒,但这可以在PHP.ini文件中更改。但是,您可能不希望允许所有脚本运行相同的时间长度-对于大多数脚本,30秒可能就可以了。这个 set_time_limit 函数允许您设置一个脚本的执行时间。它需要一个表示运行脚本的秒数的整数值,但值为0表示脚本将永远运行。

        2
  •  2
  •   Greg    17 年前

    PHP的默认超时为30秒。如果代码需要30秒,那么我认为您有一些问题!媒体表上是否有索引(一个索引) related_page_id + type 一对一 assets 应该这样做)。

    set_time_limit(0); . 你需要某种合理的最大限度,可以是一分钟、一小时、一天或其他任何时间,这取决于你的需要。

    推荐文章