Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > запись файла в longblob в MySQL


Автор: proger 2.5.2006, 17:18
Здрасти, пишу файл в лонг блоб, до одного метра пишется, а больше нет, почему? вот код:
Код

  if (file_exists($_POST["filelink"])){ // Если файл найден
   $f_f=fopen($_POST["filelink"],"r");
   $f_size=filesize($_POST["filelink"]);
   $file_to_base=fread($f_f,$f_size);
   fclose($f_f);
   if (strlen($_POST["filename"])<1){ // Если не указали имя файла
    echo $error[3];
    die;
   }
   else{ // Все ок, добавляем
    $afilename=split("/",$_POST["filelink"]);
    mysql_query("INSERT INTO FILES (UID,
                                    DATEADD,
                                    FILENAME,
                                    ECHOFILENAME,
                                    FILESIZE,
                                    FILE) VALUES (
                                    '".$_POST["uid"]."',
                                    '".date("Ymd")."',
                                    '".$afilename[count($afilename)-1]."',
                                    '".$_POST["filename"]."',
                                    '".$f_size."',
                                    '".base64_encode($file_to_base)."')") or DIE ($error[0]);
 

Автор: Mal Hack 2.5.2006, 19:02
filesize сколько показывает? 

Автор: madFobos 2.5.2006, 23:15
Я не знаю точно по поводу MySQL, но в базах можно BLOB поля на длину в самой таблице ограничивать... Возможно у тебя именно этот случай. 

Автор: proger 3.5.2006, 13:11
Mal Hack, filesize в байтах показывает верный! 

Автор: Mal Hack 3.5.2006, 16:45
Значит ограничение со стороны MySQL. ЗЖЫ: А если файл перекопировать полностью скопируется? 

Автор: proger 3.5.2006, 17:17
Mal Hack, 
это как? 

Автор: Mal Hack 3.5.2006, 17:20
Цитата(proger @  3.5.2006,  17:17 Найти цитируемый пост)
это как?  

Что именно ограничение или копирование файла?
ЗЫ: Дай дамп структуры таблицы, может он что-ть покажет.
Желательно еще глянуть настройки мискула. 

Автор: proger 3.5.2006, 17:22
через панель управления картинки кладутся любого размера а файлы не пишутся! 

Автор: Mal Hack 3.5.2006, 17:24
Цитата(proger @  3.5.2006,  17:22 Найти цитируемый пост)
через панель управления картинки кладутся любого размера а файлы не пишутся!  

Т.е. поясни пожалуйста. Что куда и  откуда кладется, и когда возникает проблема и какие файлы. 

Автор: proger 3.5.2006, 17:29
Код

CREATE TABLE `files` (
  `uid` varchar(100) NOT NULL default '',
  `dateadd` date NOT NULL default '0000-00-00',
  `filename` varchar(100) NOT NULL default '',
  `echofilename` varchar(100) NOT NULL default '',
  `filesize` int(11) NOT NULL default '0',
  `file` longblob NOT NULL,
  PRIMARY KEY  (`uid`)
) TYPE=MyISAM;
 

Автор: Mal Hack 3.5.2006, 20:12
Цитата(Mal Hack @  3.5.2006,  17:24 Найти цитируемый пост)
поясни пожалуйста. Что куда и  откуда кладется, и когда возникает проблема и какие файлы.  

В ПХП не стоит ограничение на объем памяти 1 MB?

Странно, вообще. 

Автор: madFobos 3.5.2006, 22:53
Я думаю проблема кроется здесь (это с мануала):

The maximum size of a BLOB or TEXT object is determined by its type, but the largest value you actually can transmit between the client and server is determined by the amount of available memory and the size of the communications buffers. You can change the message buffer size by changing the value of the max_allowed_packet variable, but you must do so for both the server and your client program. For example, both mysql and mysqldump allow you to change the client-side max_allowed_packet value. See Section 7.5.2, “Tuning Server Parameters”, Section 8.3, “mysql — The MySQL Command-Line Tool”, and Section 8.7, “mysqldump — A Database Backup Program”. 

Написано тут, что несмотря на то, что максимальный размер информации зависит только от типа BLOB, но реальное количество информации которое можно передать ЗА РАЗ зависит от буфера, который собственно определяется переменной max_allowed_packet. Т.е. если получается, что у тебя на сервере max_allowed_packet равна мегабайту (или чему-то похожему). Обратись в суппорт хостера (у тебя же не co-location), может они проблему разъяснят. 

Автор: proger 5.5.2006, 12:46
max_allowed_packet это в пхп конфиге? 

Автор: proger 6.5.2006, 07:44
max_allowed_packet где указать? 

Автор: IZ@TOP 6.5.2006, 08:40
И в самом деле, по умолчанию max_allowed_packet равен 1М. Конфигурация хранится my.ini в корне директории MySQL. Там есть несколько конфигураций. 
А для раздела INI файла [mysqldump] Этот параметр равен 16М.
 

Автор: madFobos 7.5.2006, 12:22
Если у тебя не собственный сервер, то нужно с хостером договариваться, потому что mysql запускают они и соответственно все настройки только они могут изменить (хотя возможно можно что-нибудь с помощью .htaccess сделать....) 

Автор: proger 10.5.2006, 12:53
IZ@TOP, Ясно, спасибо! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)