我不知道。这导致看似随机的超时。这些反过来打破了我加载它的闪光。有没有人见过这样的事情?
<?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;
?>
答案 0 :(得分:3)
如果您在代码中添加set_time_limit(0);
会怎样?我通常将该行添加到include语句下面的长执行代码中。
由于这是有效的,让我详细说明。
默认情况下,PHP脚本设置为仅执行这么长时间。我相信安装PHP时限制为30秒,但这可以在php.ini文件中更改。但是,您可能不希望允许所有脚本运行相同的时间长度 - 对于大多数脚本,30秒可能没问题。 set_time_limit
函数允许您设置一个脚本的执行时间。它需要一个整数值来表示运行脚本的秒数,但值为0表示脚本将永远运行。
答案 1 :(得分:2)
PHP的默认超时为30秒。如果该代码需要30秒,那么我认为你有一些问题!您是否在媒体表上有索引(related_page_id
+ type
之一,assets
上的索引应该这样做。)
增加时间限制更像隐藏问题而不是修复它,我绝对不会使用set_time_limit(0);
。根据您的需要,您需要某种合理的最大值,无论是一分钟,一小时,一天还是其他什么。