Avatar billede d.kryger Praktikant
30. august 2004 - 11:48 Der er 9 kommentarer og
1 løsning

Maximum execution

Hej Eksperter...

Jeg får nogle gange nedenstående fejl, når jeg opretter en nyhed. Kan nogle hjælpe mig med hvorfor, og en evt. løsning?

Fejl:
Fatal error: Maximum execution time of 30 seconds exceeded in opret_nyhed.php on line 108

Kode:
<?php
session_start();

if(!session_is_registered("loginok"))
{
// er ikke logget ind, så...
header("Location:index.php");
}
else
{
?>

<html>

<head>
<title>--**--</title>
<script language="JavaScript1.2" src="/script/fodnote.js"></script>
<link rel=stylesheet href="/script/stylesheet.css" type="text/css">
</head>

<body leftmargin="3" rightmargin="3" topmargin="3" bottommargin="3" marginwidth="0" marginheight="0">

<table border="0" width="100%" height="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="100%" height="100%" valign="top">
<p align="center"><font face="Verdana" size="2"><b>Opret nyhed</b></font></p>

<?php

function printDato($timestamp)
{
//månedsnavn oversættes til dansk
$mndarray = array(1 => 'januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'december');
$maaned=$mndarray[date('n', $timestamp)];

//skriver datoen på dansk på skærmen
print date('j. ', $timestamp) . $maaned . date(' Y, k\l. H:i', $timestamp);
}

$forfatter = "";

if (isset($_GET['bruger']))
{
$forfatter = $_GET['bruger'];
}
else
{
$forfatter = $_POST['bruger'];
}

$connection = mysql_connect("--**--","--**--","--**--");
$db = "--**--";
mysql_select_db($db);

$result = mysql_query("SELECT brugernavn, navn FROM login WHERE brugernavn='$forfatter'");

$row = mysql_fetch_array($result);

$navn= $row["navn"];

if (isset($_POST["overskrift"]))
{
$fejl = false;

if (trim($_POST["overskrift"])=="")
{    print "<font face='Verdana' color='red' size='1'>Der skal indtastes en overskrift...<br></font>";
$fejl = true;
}

if (trim($_POST["indhold"])=="")
{    print "<font face='Verdana' color='red' size='1'>Der skal indtastes en tekst...<br></font>";
$fejl = true;
}

if ($fejl==false)
{
$connection = mysql_connect("--**--","--**--","--**--");
$db = "--**--";
mysql_select_db($db);

$timestamp = time();

mysql_query("INSERT INTO nyheder (dato, overskrift, forfatter, indhold, kilde, kildeurl, kategori) VALUES (".$timestamp.", '".$_POST["overskrift"]."', '".$navn."', '".nl2br($_POST["indhold"])."', '".$_POST["kilde"]."', '".$_POST["kildeurl"]."', '".$_POST["kategori"]."')");

$result = mysql_query("SELECT email, dato, overskrift FROM nyhedsagent, nyheder WHERE aktiv='Ja' AND dato='$timestamp'");

while($row = mysql_fetch_array($result))
{
$overskrift = $row["overskrift"];
$email = $row["email"];

$message = "--**--\n";
$message = $message."--**--\n\n";

$message = $message."--**--\n\n";

$message = $message."--**--\n";
$message = $message."--**--\n\n";


$message = $message."--**--\n";
$message = $message."--**--\n";
$message = $message."--**--";


$header = "From: --**--<--**-->\r\nReply-To: --**--\r\nReturn-Path: --**--";
mail($email, "--**--", $message, $header);
}

print "<font face='Verdana' size='1'>--**--<br></font>";
print "<p align='center'><font face='Verdana' size='1'><b>--**--</b>.<br>";
print "<a href='--**--' target='_top'>--**--<br></font></p>";
exit;
}

}

?>

<form action='opret_nyhed.php' method='post'>
<p align="left"><font face="Verdana" size="1">Udfyld felterne nedenunder og klik på »Opret nyhed«. Hvis du har nogle spørgsmål til dette, så send en e-mail til.<br>
<br>
Dato: <?php printDato(time()); ?><br>
<br>
Overskrift:<br>
<input type="text" name="overskrift" size="70" class="input" value='<?php if (isset($_POST["overskrift"])) print $_POST["overskrift"]; ?>'><br>
<br>
<?php

print "Af: $navn";

?>
<br>
<br>
Kategori:<br>
<select name="kategori" class="input">
<option value="sport" <?php if (isset($_POST["sport"]) && $_POST["kategori"]=="sport") print "selected"; ?>>Sports nyhed</option>
<option value="presse" <?php if (isset($_POST["presse"]) && $_POST["kategori"]=="presse") print "selected"; ?>>Pressemeddelelse</option>
</select><br>
<br>
Tekst:<br>
<textarea rows="15" name="indhold" cols="110" class="input"><?php if (isset($_POST["indhold"])) print $_POST["indhold"]; ?></textarea><br>
<br>
Evt. kilde:<br>
<input type="text" name="kilde" size="70" class="input" value='<?php if (isset($_POST["kilde"])) print $_POST["kilde"]; ?>'><br>
<br>
Evt. kilde link:<br>
<input type="text" name="kildeurl" size="70" class="input" value='<?php if (isset($_POST["kildeurl"])) print $_POST["kildeurl"]; ?>'><br></font></p>
<p align="center"><font face="Verdana" size="1">
<input type='hidden' value='<?php print $forfatter; ?>' name='bruger'>
<input type="submit" class="input_knap" value="Opret nyhed"><br>
<br></form></font></p>
</td>
</tr>
<tr>
<td width="100%" align="center"><font face="Verdana" size="1"><img border="0" src="/grafik/sort_prik.gif" width="100%" height="1"><br>
<img border="0" src="/grafik/afstand.gif" width="100%" height="2"><br>
<script language="JavaScript1.2">document.write(text)</script></font></td>
</tr>
</table>

</body>

</html>

<?php
}
?>
Avatar billede taskmgr Nybegynder
30. august 2004 - 11:51 #1
Hvor mange poster har du i tabellen "nyhedsagent"?
Avatar billede d.kryger Praktikant
30. august 2004 - 11:56 #2
153, hvoraf 132 er sat til 'Ja'.
Avatar billede taskmgr Nybegynder
30. august 2004 - 11:59 #3
Lige umiddelbart kan jeg ikke se hvor problemet skulle ligge, men lur mig om det ikke er mail() funktionen der driller.

Sender du igennem egen server eller?
Avatar billede d.kryger Praktikant
30. august 2004 - 12:01 #4
Nej, siden ligger ved Struer.net
Avatar billede googolplex Novice
30. august 2004 - 12:10 #5
Bare for sjov skyld, så prøv at ligge følgende '.htaccess' op i mappen med scriptet:

php_value max_execution_time 300

Hvis det virker, så timer dine script ikke ud længere og det VIRKER faktisk hos nogle udbydere...
Avatar billede googolplex Novice
30. august 2004 - 12:11 #6
Men ellers, så send via smtp i stedet for mail(). Så vidt jeg ved tæller tid brugt i sockets ikke med i max_execution_time.
Avatar billede d.kryger Praktikant
30. august 2004 - 12:51 #7
Nu har jeg prøvet at lave en .htaccess fil med teksten. Samtidig har jeg oprette mig selv 150 gange i nyhedsagent'en. Fejlen kom igen, og kun 126 af e-mails blev sendt ud...

Hvordan sender man via smtp?
Avatar billede jl4511 Nybegynder
30. august 2004 - 13:11 #8
Prøv at lægge denne ind lige efter session_start(); ?

set_time_limit(0);
Avatar billede taskmgr Nybegynder
30. august 2004 - 13:19 #9
Avatar billede d.kryger Praktikant
30. august 2004 - 13:43 #10
jl4511's svar virkede... Tak for hjælpen...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester