Я хочу сохранить аудиофайл в базе данных mysql
. Я использую LONGBLOB
для хранения кодированной в base64
строки этого аудиофайла. но так же, как я выполняю свой запрос, я получаю это предупреждение без вставки в базу данных:
Warning: mysql_query() [function.mysql-query]: MySQL server has gone away
Когда я загружаю любой файл изображения, я не получаю ошибки, и код работает нормально. это происходит, когда я загружаю видео и аудиофайл. ниже в коде, который я использую:
<?php include 'database_handler.php'; if(isset($_FILES['fileToUpload']['name'])){ echo "uploading. . ."; $file = rand(0, 10000000).$_FILES['fileToUpload']['name']; if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $file)) { if($fp = fopen($file,"rb", 0)) { $picture = fread($fp,filesize($file)); fclose($fp); $base64 = base64_encode($picture); //echo $base64; $db = new Database(); $db->test($base64); } } } ?> <form action="test.php" method="post" enctype="multipart/form-data"> Select image to upload: <input type="file" name="fileToUpload" id="fileToUpload"> <input type="submit" value="Upload Image" name="submit"> </form>
Вот код функции, который я вызываю:
function test($base64String){ if (mysql_query("update users set attribute1='$base64String' where id = '83'")){ echo "success"; }else{ mysql_error(); } }
благодаря
/etc/mysql/my.cnf,
wait_timeout = 3600
а также
max_allowed_packet = 128M
и перезапустить
sudo /etc/init.d/mysql restart
Примечание. Почему вы храните аудиофайл в БД, вместо этого сохраняете его путь и сохраняете файл в системе