Datenbankeintrag wird nicht richtig erstellt

Hallo,

ich habe auf meiner Website ein Video-Uploadscript installiert und stehe nun vor einem Problem. Wenn man größere Videos hochlädt werden einige Daten nicht in die mysql Datenbank eingetragen und man kann sie somit nicht ansehen. Bei kleineren Videos klappt alles reibungslos. Ich weiß nun nicht wo ich den Fehler suchen soll. Die Videos sind ja auch nach dem Upload vorhanden, fertig ins flv-Format konvertiert und in den Ordnern wo sie sein sollen. Das einzige was nicht gemacht wird, sind die Einträge. Wenn ich die Fehlenden Werte von Hand eintrage, kann man die Videos auch anschauen.
Ich hoffe mir kann hier jemand helfen…

Hallo,

ich habe auf meiner Website ein Video-Uploadscript installiert

Gut gemacht.

Ich weiss ich bin unfair. Aber welches Script ???

und stehe nun vor einem Problem. Wenn man größere Videos
hochlädt werden einige Daten nicht in die mysql Datenbank

Aha

eingetragen und man kann sie somit nicht ansehen. Bei
kleineren Videos klappt alles reibungslos. Ich weiß nun nicht

Schön schön

wo ich den Fehler suchen soll. Die Videos sind ja auch nach
dem Upload vorhanden, fertig ins flv-Format konvertiert und in

Freu

den Ordnern wo sie sein sollen. Das einzige was nicht gemacht
wird, sind die Einträge. Wenn ich die Fehlenden Werte von Hand

Oha

eintrage, kann man die Videos auch anschauen.

Freu Spring Hüpf

Ich hoffe mir kann hier jemand helfen…

Wobei.

Du zeigst weder Script noch sonstwas. Wobei sollen wir dir also Helfen.

Es ist ein Youtube Clone Script…

Hier ist die Upload php.

include(„include/config.php“);
session_start();
include(„include/function.php“);
chk_member_login();
isMailVerified();
if($config[‚enable_package‘]==„yes“)
{
check_subscriber(100);
}

if($_REQUEST[action_upload]!="")
{
if($_REQUEST[field_myvideo_title]==""){
$err=„Upload: Please Provide a video title.“;
}
elseif($_REQUEST[field_myvideo_descr]==""){
$err=„Upload: Please Provide a video description.“;
}
elseif($_REQUEST[field_myvideo_keywords]==""){
$err=„Upload: Please provide tag/s.“;
}
elseif(count($_REQUEST[chlist])3){
$err=„Upload: Please check (1 to 3) channel/s.“;
}

if($err==""){
$page = „second“;
STemplate::assign(‚secondpage‘,„second“);
$listch=implode("|",$_REQUEST[chlist]);
STemplate::assign(‚listch‘,$listch);
$var = "
var field_myvideo_title = $_REQUEST[field_myvideo_title];
var field_myvideo_descr = $_REQUEST[field_myvideo_descr];
var field_myvideo_keywords = $_REQUEST[field_myvideo_keywords];
var listch = $listch;
„;
STemplate::assign(„var“, $var);
}
}
if($_POST[upload_final]!=“")
{
if($_FILES[‚field_uploadfile‘][‚tmp_name‘]=="") $err=„Please provide the video location.“;
if($err=="" && $_FILES[‚field_uploadfile‘][‚tmp_name‘]!="")
{
$p=$_FILES[‚field_uploadfile‘][‚name‘];
$pos=strrpos($p,".");
$ph=strtolower(substr($p,$pos+1,strlen($p)-$pos));
/* Space in Megabytes (MB) */
$space = round($_FILES[‚field_uploadfile‘][‚size‘]/(1024*1024));
if($config[‚enable_package‘]==„yes“)
{
check_subscriber($space);
}

if(($ph!=„mpg“ && $ph!=„avi“ && $ph!=„mpeg“ && $ph!=„wmv“ && $ph!=„rm“ && $ph!=„dat“) || $space>$config[max_video_size])
$err=„Invalid Video Format.“;
}

if($err=="")
{
$sql=„insert into video set
UID=$_SESSION[UID],
title=’$_REQUEST[field_myvideo_title]’,
description=’$_REQUEST[field_myvideo_descr]’,
keyword=’$_REQUEST[field_myvideo_keywords]’,
channel=‚0|$_REQUEST[listch]|0‘,
space = ‚$_REQUEST[space]‘,
addtime=’“.time()."’,
adddate=’".date(„Y-m-d“)."’,
vkey=’".mt_rand()."’,
type=’$_REQUEST[field_privacy]’,
filehome=’$_REQUEST[p]’";
$conn->execute($sql);
$vid=mysql_insert_id();
$vdoname=$vid.".".$ph;

if(isset($_FILES[‚field_uploadfile‘][‚tmp_name‘]) && is_uploaded_file($_FILES[‚field_uploadfile‘][‚tmp_name‘]))
{
$ff = $config[vdodir]."/".$vdoname;
if(move_uploaded_file($_FILES[‚field_uploadfile‘][‚tmp_name‘], $ff))
{ $mov = new ffmpeg_movie($ff);
video_to_frame($ff,$vid,&$mov,$listch[0]);
$duration=$mov->getDuration();
exec("$config[ffmpeg] -i $config[vdodir]/$vdoname -acodec mp3 -ar 22050 -ab 32 -f flv $config[flvdodir]/".$vid.".flv");
}

}
//END

$key=substr(md5($vid),11,20);
$sql=„update video set
vdoname=’$vdoname’,
flvdoname=’“.$vid.".flv’,
duration=’$duration’,
vkey=’$key’ WHERE VID=$vid";
$conn->execute($sql);

if($config[‚enable_package‘]==„yes“)
{
$sql = „update subscriber set used_space=used_space+$space, used_bw=used_bw+$space, total_video=total_video+1 where UID=$_SESSION[UID]“;
$conn->execute($sql);
}

header(„Location:blush:config[baseurl]/upload_success.php?viewkey=$key&upload=yes&vid=$vid“);
}
}

Sehe aber keinen Fehler drin.

noch ne andere Frage, kommt das nur vor wenn andere Uploaden, oder auch eigener Upload. Dabei denke ich wenn an ein TimeOut des Browsers, was bei mir bei Form Upload immer passiert, sprich das File kommt nicht ganz an, somit wird danach auch nix geschrieben.

Es passiert bei jedem der ein Video uploadet. Wenn es ein Timeuot vom Browser wäre, würde der Upload abbrechen oder irre ich mich? Es ist egal wie Groß die Videos sind, sie werden immer komplett hochgeladen und dann konvertiert. Nur der Datenbankeintrag ist dann nicht richtig vorhanden.
Und mir ist nochwas aufgefallen. Es wird ja zu jedem Video ein „viewkey“ erstellt, unter dem es gefunden wird. Das ist ja ein 20 stelliger Code aus Zahlen und Buchstaben. Bei Größeren Videos wird zwar auch ein 20 stelliger Code erzeugt aber in der Datenbank wird nur ein kürzerer Code, der nur aus Zahlen besteht, eingetragen.
Ich vermute mal das deswegen die anderen Einträge nicht hinzugefügt werden weil der dazugehörige „viewkey“ nicht gefunden wird.

Du irrst

Wenn es ein
Timeuot vom Browser wäre, würde der Upload abbrechen oder irre
ich mich?

Der Timeout kann auch Serverseitig sein - und zwar nennt sich das upload max file size und steht in der php.ini.
Einfach mal nachgucken, wieviel MB’s der Upload sein darf und dann man ein kleineres Video versuchen…
Dabei wird wenn dann nur gemeckert, dass der upload zu gross ist - abgebrochen wird nicht…

Die maximale Dateigröße ist auf 50 mb gestellt. Daran kann es nicht liegen. Aber das Problem wird wohl wirklich ein Timeout gewesen sein.
Ich habe das Script jetzt etwas geändert und es läuft jetzt halbwegs.
Der Datenbankeintrag wurde ja erst gemacht bzw. fertiggestellt wenn die Konvertierung abgeschlossen war. Und ich nehme an das mysql hat solange auf die Daten „gewartet“ und dann wurde es durch
mysql.connect_timeout
beendet und der Datenbankeintrag somit nicht fertiggestellt.
Das Script sieht jetzt so aus:

if(isset($_FILES[‚field_uploadfile‘][‚tmp_name‘]) && is_uploaded_file($_FILES[‚field_uploadfile‘][‚tmp_name‘]))

$key=substr(md5($vid),11,20);
$sql=„update video set
vdoname=’$vdoname’,
flvdoname=’“.$vid.".flv’,
duration=’$duration’,
vkey=’$key’ WHERE VID=$vid";
$conn->execute($sql);

if($config[‚enable_package‘]==„yes“)
{
$sql = „update subscriber set used_space=used_space+$space, used_bw=used_bw+$space, total_video=total_video+1 where UID=$_SESSION[UID]“;
$conn->execute($sql);
}

{

$ff = $config[vdodir]."/".$vdoname;
if(move_uploaded_file($_FILES[‚field_uploadfile‘][‚tmp_name‘], $ff))
{ $mov = new ffmpeg_movie($ff);
video_to_frame($ff,$vid,&$mov,$listch[0]);
$duration=$mov->getDuration();
exec("$config[ffmpeg] -i $config[vdodir]/$vdoname -acodec mp3 -ar 22050 -ab 32 -f flv $config[flvdodir]/".$vid.".flv");
}

}
//END

Jetzt wird der Datenbankeintrag zuerst erstellt und dann die Konvertierung gestartet und es funktioniert alles bis auf den Eintrag von der Laufzeit des Videos. Ich denke das liegt daran weil diese Information von ffmpeg kommt aber ffmpeg erst nach dem eintrag gestartet wird.