Jump to content
php.lv forumi

php/mysql - liela longblob noglabāšana


elfz

Recommended Posts

Varbūt kādam ir idejas:

 

uzdevums: nepieciešams dabūt datu bāzē longblob kolonnā 3mb lielu bināru failu no php.

 

problēmas:

- load_file dažādu tehnisku iemeslu dēļ lietot nevar;

- tīrā veidā liekot datu bāzē, selects pārkāpj pāri db pieļaujamajām robežām (max_packet_size);

- sadalot failu pa blokiem un grūžot datu bāzē ar update my_table set file_data = concat(file_data, '...') where id=...

concat apraujas pie 1048576 baitiem, pēc kuriem atdod tikai NULL -- pieņemu, ka atkal tiek uzkāpts kādam konfigurācijas ierobežojumam.

(concat vari pārbaudīt pats ar "select length(concat(repeat('A', 1048576), 'a'));" )

 

bet failu iekšā dabūt vajag, un no php. mysql nav mans, un parametru mainīšanu diez vai izdotos sarunāt, tā ka apvedceļa risinājums būtu labāk, kaut gan problēmas cēlonis mani arī interesē.

 

Ir kādas idejas?

 

Mainīt datu bāzes struktūru, glabāt failu failsistēmā, utml, šoreiz nebūs risinājums. Kaut kā taču ļaudis aizpilda 2gb blobus, vai ne tā? :D

Link to comment
Share on other sites

Pēc neliela researcha šķiet, ka tomēr mysqlu piemānīt neizdosies:

 

max_allowed_packet The maximum size of one packet. (..) You must increase this value if you are using big BLOB columns. It should be as big as the biggest BLOB you want to use. The protocol limits for max_allowed_packet is 16M in MySQL 3.23 and 2G in MySQL 4.0.

 

Šķiet, tēmu var uzskatīt par slēgtu, tā arī īsti nesākušos. Mēģināšu runāt ar admini.

Link to comment
Share on other sites

×
×
  • Create New...