Avatar billede phpbegynder2004 Nybegynder
17. september 2005 - 17:50 Der er 4 kommentarer og
1 løsning

Fejl i upload script

Hej,
Jeg har et upload script der skal resize det uploadede billede og herefter gemme det og smide noget info om det ind i databasen. Det virker fint  med små billeder, men når billedet er meget stort (ca. 3MP+) virker scriptet ikke så godt mere.

Der kommer fejl om max_user_connection og scriptet stopper. Jeg kan dog se at hele det 2mb store billede bliver uploadet. Det bliver dog ikke resized og der bliver heller ikke smidt info ind i databasen.
Har gået gennem scriptet flere gange, men kan ikke hvad der er galt.

På forhånd mange tak!

Koden:
<?php
$limitedext = array(".jpg",".jpeg", ".bmp");
$sizelimit = "ja";
$sizebytes = "200000";



if($_POST['skriv']=="doit"){
if ($_FILES['file'] != "") {
  $ext=strrchr($_FILES['file']['name'],'.');
  $ext=strtolower($ext);

$filnavnet = $_SERVER["DOCUMENT_ROOT"] . "/profilbillede/".$_SESSION['id'].$ext;

if (file_exists($filnavnet)) {
  die("Billedet eksisterer allerede");
}

if (!in_array($ext,$limitedext) ) {
  die("Filen er en forkert filtype. De tiladte filtyper er bmp og jpg/jpeg.");
}

if($ext==".bmp"){
if (($_FILES['file']['size'] > $sizebytes)) {
  die("Billedet er for stort. En bmp-fil må højest fylde 200 kb.");
}
@copy($_FILES['file']['tmp_name'], $filnavnet) or die("Filen kunne ikke kopieres til serveren ".$filnavnet);
}else{


@copy($_FILES['file']['tmp_name'], $filnavnet) or die("Filen kunne ikke kopieres til serveren ".$filnavnet);
    #-+ Read the source image
    $src_img = ImageCreateFromJPEG($filnavnet);

    #Vælg bredden
    $tn_w = "160";

    #Hent billedets bredde og højde
    $imginfo = getimagesize($filnavnet);
    $org_w= $imginfo[0];
    $org_h = $imginfo[1];

    #Beregn højden i forhold til bredden
    $tn_h = floor($tn_w * $org_h / $org_w);
           
    #Sæt det nye billede
    $dst_img = imagecreatetruecolor($tn_w,$tn_h);
       
    #Ændre det!
    ImageCopyResampled($dst_img, $src_img, 0, 0, 0, 0, $tn_w, $tn_h, $org_w, $org_h);
               
    #Gem det!
    ImageJPEG($dst_img, $filnavnet);
   
    #slet "midlertidige" filer fra serveren.
    imagedestroy($dst_img);
}
} else {
  die("Husk at vælge et Billede");
}
echo "<p />";
echo $_FILES['file']['name']." blev uploaded<br><img src=\"profilbillede/".$_SESSION[id].$ext."\">";
mysql_query("UPDATE users SET billede='".$_SESSION[id].$ext."' WHERE id='$_SESSION[id]'");
}else{
?>

<form method=POST action="index2.php?ske=minside&adr=upload" enctype="multipart/form-data">
<p>Vælg et Billed:<br>
<input type="hidden" name="skriv" value="doit" size="30">
<input type="file" name="file" size="30">
<p><button name="submit" type="submit" value="Upload">
Upload
</button>
</form>
<?
}
?>
Avatar billede erikjacobsen Ekspert
17. september 2005 - 20:27 #1
Den tid dit script må bruge på webserveren/webhotellet er sikkert overskredet.
Er det din egen server, kan du øge tiden. Er det på et webhotel, må du affinde dig med det.
Avatar billede phliplip Nybegynder
17. september 2005 - 22:14 #2
Som eric siger..

Hvis din server ikke har safe_mode=on så kan du bruge følgende

set_time_limit(120);

sætter script execution time (levetiden) til 120sek = 2minutter
Du kan også sætte det til 0 hvis det skal have lov til at køre uendeligt..
Avatar billede Slettet bruger
18. september 2005 - 12:18 #3
hmm i hvad for en fil skal man gøre det ??? php.ini ??
Avatar billede phliplip Nybegynder
18. september 2005 - 21:51 #4
Overså lige at der stod max_user_connection.. det er noget database specifikt!

I din MySQL config, my.conf

I det her eksempel er det sat til 900

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
set-variable = max_connections=900
[mysql.server]
user=mysql
basedir=/var/lib
Avatar billede phpbegynder2004 Nybegynder
30. september 2005 - 17:39 #5
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