Upload de arquivo - Misturando arquivos - URGENTE (RESOLVIDO)

Tenho uma aplicação do tipo aba e em uma das abas tem um form que permite o usuário anexar (upload) arquivos. O arquivo é do tipo Longblob no mysql, tem um campo que armazena o nome do arquivo. Tudo funcionando perfeitamente até aqui.

Antes de entrar no form de aba, tem um form de controle que seleciona um projeto e grava o id do projeto numa variável global. Esse id é usado no select dos forms dentro de cada aba para listar apenas anexos referente ao projeto selecionado.

O que vem ocorrendo é quando tem muitos usuários online, realizando upload (tamanho máximo 50MB), muitas vezes aparece um arquivo de outro projeto, ou seja, quando existe muita demanda no sistema, muita carga de usuários ao mesmo tempo realizando upload, por vezes mistura arquivos de um projeto no outro.

Alguém sabe o que pode estar ocasionando isso? Seria alguma configuração no php.ini ou na configuração do mysql (my.cnf)?

Eu passo por algo parecido, quando tenho vários usuários no sistema, acontece da variável global se misturar.
Eu fiz com que os usuários usassem o modo retrito do navegador, achando que era cache. Realmente diminuiu bastante a incidência, mas não chegou a 100% ainda. Ja não creio mais que seja algo local e sim uma config qualquer no servidor, continuo pesquisando…

Continuo pesquisando, estou com o problema agora… possíveis soluções, que ainda estou testando

Alterações nos parametros do php.ini:

max_execution_time
max_file_uploads
max_input_nesting_level
max_input_time
memory_limit
max_input_vars

Alteração no my.cnf (Mysql):
max_connections

Ao aumentar o max_connections na configuração do mysql, resolvi o problema de Muitas conexões simultâneas… tava dando erro no acesso ao banco de dados. O padrão normalmente é 100, aumentei para 1800, pois o meu sistema requer muita demanda de usuários online.

As configurações do php.ini alterei para:
max_execution_time = 60
max_file_uploads = 120
max_input_nesting_level = 128
max_input_time=360
memory_limit = 512M

Não alterei ainda o parametro max_input_vars…

Estou vendo se essas configurações vão dá resultado.

Alguém mais tem alguma ideia do que pode estar ocasionando o problema de misturar arquivos.

Do manual do scriptcase:
O processo de instalação do ScriptCase será descrito de acordo com o tipo de ambiente.

A NetMake recomenda, para bom funcionamento do ScriptCase, as seguintes configurações do php.ini:

post_max_size: 512M.
memory_limit: 512M
upload_max_filesize: 512M
max_input_vars: 6000

eu deixo o max_execution_time = 3600
max_input_time=3600

Fiz as alterações no php.ini, incluindo a alteração no max_input_vars = 6000.

Problema ainda persiste, durante o dia de hoje, de 8h até 15h, analisando o log, 67 usuários logaram.

Será algum bug no scriptcase 6? Alguém mais tem alguma ideia?

Eu testei através do próprio scriptcase e percebi que arquivos acima de 10, 12 MB, não vão de jeito nenhum.

As configurações no PHP.ini no meu computador estão assim:

max_execution_time = 360
max_file_uploads	 = 20
max_input_nesting_level = 	64
max_input_time = 360
max_input_vars = 1000
memory_limit = 512M
post_max_size =  200M
upload_max_filesize = 200M
mysql.connect_timeout = 360

Esses são parametros que, ao meu ver, poderiam interferir em uploads de arquivos para gravar no banco. Estou começando acreditar não ser um problema de servidor e configuração de servidor e sim um BUG no scriptcase mesmo.

Localmente, só eu utilizando, tentei mandar um arquivo de 21MB e ele processa previamente, ao clicar em atualizar, processa mais uma vez, demorando um pouco mais, mas no fim, não aparece a mensagem que foi atualizado com sucesso (conforme eu configurei).

Alguém pode se manifestar?

Você esta dando somente 6 minutos para o upload e para execução de script.
Imagino que, conforme a quantidade, por exemplo vários arquivos de 20mb não serão upados em 6 minutos somente.
Na intranet pode ser rápido, mas na internet acho difícil.
Ainda mais com muita gente consumindo sua banda de upload.
Aumente o tempo de:
max_execution_time = 360
max_input_time = 360
de 360 para 3600 (1hora).
Pensamos que é muito, mas resolveu muitos dos meus pepinos aqui.
você também estipulou o limite de somente 20 arquivos sendo upados em max_file_uploads = 20.
Veja se não tem nenhum engraçadinho tentando mais que isso.

Obrigado por responder, mas conforme eu disse, fiz essas configurações locais no meu notebook onde tenho o scriptcase rodando. Apenas eu utilizei o sistema e mais ninguém. Percebi que qualquer arquivo acima de 10 ou 12 MB não vai.

Como disse, testei um arquivo de 21MB, em localhost, só eu utilzando, aí ele processa a primeira vez, quando termina, eu tento salvar e não acontece nada. Arquivos menores, vai numa boa.

Por isso estou começando acreditar ser um bug no scriptcase mesmo.

Alexandre, o seu sistema recebe arquivos grandes?

Quanto a alguém enviar mais do que 20, o formlário envia no máximo cinco, pois a tabela que grava os arquivos só tem cinco campos do tipo longblob. Outra coisa é que no servidor valendo, esse parametro está configurado em 120 e o problema persiste. Arquivos até uns 10MB ou 12MB vão, o problema é quando fica acima desse tamanho.

Aqui aceitamos arquivos de até 512MB.

Bem meu php.ini (localhost) tá configurado pra receber até 200MB, o da web em 50MB e no php.ini q vem no scriptcase está configurado para 512MB.

Mas acho que descobri onde é o problema. No my.cnf (configuração do mysql) também existe uma opção que limita o tamanho de pacote, como estou gravando em banco em longblob, alterei no quadro [mysqld] do arquivo my.cnf o parametro max_allowed_packet de 16M para 32M. Na verdade existem outros parametros relacionados a buffer, dump, alterei todos de 16M para 32M, só para testar com arquivos maiores que 15MB, e aparentemente resolveu o problema.

Na verdade, Alexandre, só pra confirmar, poderias checar o teu my.cnf pra ver como estão configurados esses parametros, por favor?

o max_allowed_packet limita o tamanho do pacote que vai para o banco.
Aqui deixo em 1024MB pois facilita até o backup/restore.
Pode ver que o próprio mysqlworckbench ao fazer um backup/restore seta no cliente para 1024MB.

Então é isso mesmo na sua opinião?

Se vai fazer upload no disco:
alterar no php.ini.
E as vezes no apache (raro -> LimitRequestBody).
No banco;
Também tem que alterar no mysql o limite dele.
Se tiver dúvidas procure no google por: max_allowed_packet upload arquivos