Foros del Web » Programando para Internet » PHP »

Problemas en UPDATE de muchas filas a la vez

Estas en el tema de Problemas en UPDATE de muchas filas a la vez en el foro de PHP en Foros del Web. Hola, buenos días. Tengo un problema con una aplicación que no sé como solucionar. Antiguamente dicha aplicación permitía hacer actualizaciones de tablas de más de ...
  #1 (permalink)  
Antiguo 04/08/2013, 04:31
 
Fecha de Ingreso: agosto-2013
Mensajes: 2
Antigüedad: 10 años, 8 meses
Puntos: 0
Problemas en UPDATE de muchas filas a la vez

Hola, buenos días.

Tengo un problema con una aplicación que no sé como solucionar. Antiguamente dicha aplicación permitía hacer actualizaciones de tablas de más de 3000 filas a la vez;hace poco cambiamos de servidor y con ello la configuración del Php.ini y me encuentro un problema con el software que antes no tenía:

Un usuario puede recuperar una lista de registros (digamos 3000) y tiene la posibilidad de hacer un UPDATE masivo de esos 3000 registros, pero a la hora de la verdad, el máximo número de registros por operación que se están actualizando es de 996; entrando desde otra opción del software y seleccionando los 3000 registros del ejemplo, el máximo que se está actualizando es de 498, justamente la mitad de los 996 registros que se actualizan entrando desde otra sección.

En el primer caso (maximo de update 996 registros), la ejecución es de tipo "request" y utiliza el array siguiente:

input->clean_array_gpc('r', array(
'campo1' => TYPE_INT,
'campo2' => TYPE_STR


En el segundo caso (máximo de update 498 registros), el que utiliza Post:

input->clean_array_gpc('p', array(
'campo1' => TYPE_INT,
'campo3' => TYPE_ARRAY_INT
));


He estado mirando si el problema se debía al tipo de motor (Innodb frente a MyISam que tenía antiguamente) y lo descarto porque he probado ambos motores y sigo teniendo el mismo problema.

Viendo un poco el php.ini me encuentro con la variable:

output_buffering = 4096

¿Es posible que debido a esta variable se esté limitando la información que se envía en el software para actualizar las 3000 filas y esté actualizando solamente los primeros 996 registros en un caso y los 498 en otro? ¿Con Output_buffering Off se evitaría "cortar" la información que se está enviando o esta variable no tiene nada que ver con el problema?

¿Que variables del php.ini podrían estar "acortando" la información total que se intenta actualizar?

Saludos.
  #2 (permalink)  
Antiguo 04/08/2013, 12:41
 
Fecha de Ingreso: julio-2013
Mensajes: 87
Antigüedad: 10 años, 9 meses
Puntos: 9
Respuesta: Problemas en UPDATE de muchas filas a la vez

Hola,

Lo ideal sería que nos enviases la versión de PHP que estás usando y su pudiese ser el php.ini.

De todas formas mira si tienes el módulo de protección Suhosin activo ya que ahí sí que hay limitaciones en el número de parámetros que se pasan por POST, GET, ...

Puedes probar a desactivarlo con
Código BASH:
Ver original
  1. suhosin.simulation = On
  #3 (permalink)  
Antiguo 04/08/2013, 17:14
 
Fecha de Ingreso: agosto-2013
Mensajes: 2
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problemas en UPDATE de muchas filas a la vez

Hola Ccliment.
En primer lugar gracias por responder y en segundo lugar disculpa por haber puesto tan poca información (estoy poco puesto en esto de php).

La versión que se está usando de php es la 5.3.25-18.el6.art

Respecto al tema de Suhosin, no lo he visto por ningún lado.

Te copio lo que he podido ver en el archivo Php.ini:

engine = On
short_open_tag = On
asp_tags = Off
precision = 14
y2k_compliance = On
output_buffering = 4096
zlib.output_compression = Off
implicit_flush= Off
unserialize_callback_func =
serialize_precision = 100
allow_call_time_pass_reference = Off
safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
disable_functions =
disable_classes =
expose_php = Off
max_execution_time = 60
max_input_time = 60
memory_limit = 128M
error_reporting = E_ALL & ~E_DEPRECATED
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = Off
variables_order = "GPCS"
request_order = "GP"
register_globals = Off
register_long_arrays = Off
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 8M
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
include_path = ".:"
doc_root =
user_dir =
enable_dl = Off
file_uploads = On
upload_max_filesize = 128M
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60

[Syslog]
define_syslog_variables = Off

[SQL]
sql.safe_mode = Off

[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1

[MySQL]
mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off

[MySQLi]
mysqli.max_links = -1
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off

[PostgresSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0

[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10


[bcmath]
bcmath.scale = 0

[Session]
session.save_handler = files
session.save_path = "/var/lib/php/session"
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = Off
session.bug_compat_warn = Off
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeent ry"

[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.secure_connection = Off

[Tidy]
tidy.clean_output = Off

[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400


Un saludo y muchas gracias por anticipado.

Etiquetas: filas, muchas, registro, tabla, update, variable, vez
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:06.