Portál AbcLinuxu, 24. dubna 2024 20:45


Dotaz: Php+Mysql - max_allowed_packet

23.12.2008 16:31 Vojta
Php+Mysql - max_allowed_packet
Přečteno: 812×
Odpovědět | Admin
Ahoj, pisu jednoduchou webovku v php, ktera by mimo jine mela umet uploadnout soubor a ulozit jej jako blob do mysql databaze. Ulozeni napr. 2MB pdf souboru funguje bez problemu, ale ulozeni ani ne 2MB souboru jpg nebo mp3 skonci chybou Got a packet bigger than 'max_allowed_packet' bytes. Problem jde vyresit napr. tak, ze zvysim u mysqld max_allowed_packet. Nicmene zajimalo by me, proc 2MB pdf nevadi a 2MB jpg vadi (navic na hostingu, kde by to melo bezet max_allwoed_packet nebudu moct menit).

Mam podezreni, ze je to cimsi (nastavenim?) v php (proto dotaz taky davam sem), protoze se nepamatuju, ze by se mi nekde jinde (napr. v jave) kdy vyskytnul podobny problem.

Predem diky za odpovedi a nakopnuti spravnym smerem

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.12.2008 12:10 Messa
Rozbalit Rozbalit vše Re: Php+Mysql - max_allowed_packet
Odpovědět | | Sbalit | Link | Blokovat | Admin

Záleží na tom, jak tam ten soubor vkládáš - asi se u JPG nebo MP3 musí escapovat víc znaků, takže ve výsledku se v SQL posílá více dat než u PDF. Pokud ty soubory kóduješ do hexadecimálního zápisu, pak by to skutečně byla záhada, protože by opravdu byly stejně dlouhé.

To nastavení max_allowed_packet se nastavuje jak na serveru, tak na klientu. Zkus si ověřit, jestli to máš v PHP nastavené stejně jako v MySQL.

Zjisti si, jaké je nastavení max_allowed_packet na hostingu - možná to bude stačit. Pokud ne, napadá mě ten blob ukládat navícekrát - nejdříve poslat první megabajt, pak druhý atd. (při použití transakcí bude konzistence zachována).

Heron avatar 24.12.2008 13:09 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Php+Mysql - max_allowed_packet
A navíc zde může sehrát roli komprimace přenosu. Tomu by odpovídaly i ty typy souborů, PDF půjde zkomprimovat zatímto JPG a MP3 už ne.
25.12.2008 16:05 Vojta
Rozbalit Rozbalit vše Re: Php+Mysql - max_allowed_packet

Diky, to bude asi vysvetleni, escapuju to pres <i>mysql_real_escape_string</i>, a u mp3 nebo jpg se toho escapuje vazne mnohem vic. Co me ale dal mate je, ze i kdyz na servru (mysqld) nastavim max_allowed_packet na 1MB, v pohode ulozim 2MB pdf. Z toho usuzuju, ze php s tim dela jeste neco dal (ze to asi samo rozkouskuje?), ale u jpg a mp3 to nedela, zatim se mi k tomu nepodarilo vygooglit nic rozumnyho. Kazdopadne rozkouskovat to na 1MB casti s posilat to postupne se mi moc nechce a videl bych to jako asi posledni reseni.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.