Hallo erstmal.
Hab ein problem, das mich langsam zur Weißglut treibt. Hab ein Upload+flv-konvertierungs Script geschrieben, via XAMPP Apache und MySQL laufen und funktioniert alles soweit...nur der Upload spinnt komplett. Manchmal werden 20mb Files innerhalb von 2 Sekunden "hochgeladen" (teste das ganze nur lokal) und konvertiert, aber meistens ist es so dass sich garnichts tut. Das script läuft und läuft aber die Datei wird nichtmal kopiert (an der Größe liegt es nicht, manchmal funktioniert es mit der selben Datei). Meine Vermutung ist nun, dass das Script versucht die tmp Datei zu schreiben und sich daran aufhängt. Wenn ich während des Uploads (Unten steht bei FireFox "Sende Anfrage an localhost...") in den tmp Ordner von XAMPP wechsle, sehe ich dort eine phpXXX.tmp Datei, die allerdings nur ein paar mb groß ist.
Max. Dateigröße ist auf 64M gesetzt, die videos mit denen ich das bis jetzt getestet habe sind alle zw 10 und 25 mb groß.
Hab auch schon versucht nur den Upload zu testen, mit dem selbe Ergebnis. Es liegt also vermutlich am Server und nicht am Script. Trotzdem hier mal HTML und PHP:
Vielleicht werdet ihr ja daraus schlau
HTML - Upload Form
Code:
<form enctype="multipart/form-data" action="uploader.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="200000000">
Please choose a file: <input name="uploaded" type="file" /><br />
Title of File: <input type="text" name="vidtitle" maxlength="255"><br />
Description of File: <input type="text" name="viddescr" maxlenght="255">
<input type="submit" value="Upload" />
</form>
PHP - Script
PHP-Code:
<?php
error_reporting(E_ALL);
print_r($_FILES);
$target = "C:\\xampp\\htdocs\\aws\\uploads\\"; //zielpfad für den upload
$destPath = "C:\\xampp\\htdocs\\aws\\video\\flv\\"; //zielpfad für konvertiertes video
$fileNameParts = explode( ".", $_FILES['uploaded']['name'] ); //zB bei video.mov -> liefert "video" und "mov"
$destFile = $destPath . $fileNameParts[0] . ".flv"; //Zieldatei
$fileExtension = end($fileNameParts); //liefert die Dateinamenerweiterung
$fileExtension = strtolower($fileExtension); //wandelt Dateinamenerweiterung in kleinbuchstaben
$ffmpegPath = "C:\\xampp\\ffmpeg\\ffmpeg.exe";
$flvtool2Path = "C:\\xampp\\flvtool2\\flvtool2";
$destThumb = $destPath . $fileNameParts[0] . ".jpg";
// Es wird ueberprueft, ob datei schon existiert
if (!file_exists($destFile)) {
// Es wird ueberprueft ob datei ein video ist
if( $fileExtension == "avi" || $fileExtension=="mpg" || $fileExtension=="mpeg" || $fileExtension=="mov" || $fileExtension=="wmv" || $fileExtension=="mp4" || $fileExtension=="flv"){
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target . basename($_FILES['uploaded']['name'])))
{
echo "The file " . basename( $_FILES['uploaded']['name']) . " has been uploaded";
$srcFile = $target . basename($_FILES['uploaded']['name']);
// Konvertierung zu flv mit FFMPEG starten
exec($ffmpegPath . " -i " . $srcFile ." -acodec libmp3lame -ar 22050 -f flv -s 450x300 -keyint_min 20 " . $destFile );
exec($flvtool2Path . " -U " . $destFile); //Metatags einfuegen
exec($ffmpegPath . " -i " . $srcFile ." -s 50x40 -ss 00:00:03 -an -r 1 -vframes 1 " .$destThumb); //Thumbnail erstellen
//MYSQL STARTS HERE!
//Zur Datenbank connecten
$verbindungs_id = mysql_connect("localhost", "root", "") or die("Falscher Host oder User oder PW");
$id = mysql_select_db("aws") or die("keine DB gefunden!!");
//Titel und Beschreibung vom Formular holen
$vidtitle = $_POST["vidtitle"];
$viddescr = $_POST["viddescr"];
$mysqlvidpath = mysql_escape_string("http://localhost/aws/video/flv/" . $fileNameParts[0] . ".flv");
$mysqlthumbpath = mysql_escape_string("http://localhost/aws/video/flv/" . $fileNameParts[0] . ".jpg");
//In Tabelle "videos" einsetzen
$neu= "INSERT INTO videos (FLVPATH, IMGPATH, VIDTITLE, VIDDESCR) VALUES ('$mysqlvidpath', '$mysqlthumbpath', '$vidtitle', '$viddescr')";
mysql_query($neu)OR die("Ein Fehler ist aufgetreten: ".mysql_error());
}
else {
echo "Sorry, there was a problem uploading your file.";
}
}
else {
die ("Error: Just Video Files Allowed (mov, avi, mpg, mpeg, wmv, mp4, flv)");
}
}
else {
die("Error: File already exists on Server");
}
?>
Errorausgabe funktioniert auch nicht (nach einer weile kommt "die Seite kann nicht angezeigt werden" oder so)
Das ganze läuft unter Windows XP und ffmpeg, ffmpeg-php und flvtool2 sind alle installiert und funktionieren. (wie gesagt, hin und wieder funktioniert es ja auch)
Ich hoffe ihr könnt mir helfen, bin echt schon am verzweifeln...
Vielen Dank