Problema de tamaño de carga en PHP y MySql

Estoy cargando archivos a un DB de MySql a través de PHP. Puedo subir archivos de hasta 1 MB de tamaño (encontrados por prueba y error). Los archivos de más de 1 MB de tamaño no se cargan. El error MySql impreso por la función mysql_error () en PHP es: el servidor MySQL se ha ido

¿Alguien puede ayudarme con esto? El servidor MySql está funcionando solo para solicitudes> 1MB que dan este error.

Saludos, Mayank.

PD: estoy usando un formulario para subir el archivo.

Description:

Su consulta sql probablemente excede el tamaño de max_allowed_packet en cuyo caso el servidor se desconectará.
Es posible que le interese mysqli_stmt :: send_long_data, que le permite enviar parámetros más largos que max_allowed_packet en trozos.

Actualización: “¿Cómo puedo cambiarlo? ¿Usar mysqli es la única opción?”
Afaik el valor no se puede modificar en una base por sesión, es decir, si no puede cambiar la configuración del servidor (my.cnf o parámetros de inicio), el valor será de solo lectura. editar: como sugiere el comentario, puede cambiar el valor global del servidor mysql una vez que se haya iniciado si tiene los permisos adecuados . PDO / PDO_MYSQL (a partir de phpversion 5.3.0) no parece ser compatible con send_long_data, pero tampoco estoy seguro de eso. Eso dejaría a mysqli como la única opción. Recientemente noté que Wez Furlong se unió al desbordamiento de stack. Como él es uno de los autores de la implementación de PDO, podría saberlo (aunque no escribió el módulo pdo_ mysql ).

(Totalmente no probado y feo) ejemplo

 // $mysqli = new mysqli(.... $fp = fopen($_FILES['binFile']['tmp_name'], 'rb') or die('!fopen'); //$result = $mysqli->query('SELECT @@max_allowed_packet') or die($mysqli->error); //$chunkSize = $result->fetch_all(); //$chunkSize = $maxsize[0][0]; $chunkSize = 262144; // 256k chunks $stmt = $mysqli->prepare('INSERT INTO foo (desc, bindata) VALUES (?,?)') or die($mysqli->error); // silently truncate the description to 8k $desc = 8192 < strlen($_POST['txtDescription']) ? $_POST['txtDescription'] : substr($_POST['txtDescription'], 0, 8192); $stmt->bind_param('sb', $desc, null); while(!feof($fp)) { $chunk = fread($fp, $chunkSize); $stmt->send_long_data(1, $chunk) or die('!send_long_data.'.$stmt->error); } $result = $stmt->execute(); 

Para subir archivos grandes a su servidor con PHP, necesita cambiar 2 parámetros en su archivo php.ini.

 ; Maximum allowed size for uploaded files. upload_max_filesize = 50M ; Maximum size of POST data that PHP will accept. post_max_size = 50M 

50M = 50Mb

 Try these different settings in C:\wamp\bin\apache\apache2.2.8\bin\php.ini Find: post_max_size = 8M upload_max_filesize = 2M max_execution_time = 30 max_input_time = 60 memory_limit = 8M Change to: post_max_size = 750M upload_max_filesize = 750M max_execution_time = 5000 max_input_time = 5000 memory_limit = 1000M Then restart wamp to take effect Have fun,