PHP max_execution_time, qual é a melhor música para grandes arquivos enviados

1

Eu tenho um WordPress instalado e eu uso um formulário web para fazer upload de imagens no meu site. O formulário da web permitindo que o usuário final envie mais de um arquivo por vez.

O problema é que um dos meus usuários teve esse erro:

Erro fatal: o tempo máximo de execução de 30 segundos foi excedido em /home/ACOUNT/public_html/wp-includes/media.php na linha 258

Então qual é o melhor ajuste para max_execution_time . Agora, como você pode ver, são 30 segundos. Alguma ideia, por favor?

Se eu definir isso em um valor muito alto (ou seja, 600) isso afetará o desempenho do meu servidor?

Observação: o usuário tentou enviar dois arquivos, com tamanhos de 2.96MB e 2,9MB.

Atenciosamente Merianos Nikos

    
por Merianos Nikos 28.03.2012 / 08:56

3 respostas

3

Eu estou supondo a partir do caminho na mensagem de erro que este é um sistema Unix / Linux (MSWindows lida com o tempo limite muito diferente ).

Enquanto a largura de banda (e latência!) tem um grande impacto no tempo de processamento da solicitação, o relógio PHP só inicia quando o interpretador PHP é invocado - isso não acontecerá até que o servidor tenha recebido uma solicitação completa - isto é, o tempo de execução do PHP e, portanto, o tempo limite não deve ter nada a ver com quanto tempo o servidor da Web levou para processar a solicitação.

Existe um tempo limite no PHP para determinar quanto tempo ele deve gastar recebendo dados do servidor web - max_input_time - e foi reportado que quando isso é excedido, reporta max_execution_time excedido! .

Então .... assumindo uma rede de latência 0 ...

  • 00:00 usuário inicia o upload, o relógio de tempo limite do apache é iniciado (mas continuará sendo redefinido pela chegada de novos pacotes)

  • 00:10 recebimento do pedido preenchido pelo Apache, pedido entregue ao PHP, max_input_time clock iniciado

  • 00:11 O PHP leu todas as entradas, o max_input_time clock parou, o max_execution_time clock iniciou, o script foi executado

Agora, em uma caixa Unix, o clock max_execution somente é ativado quando o PHP está sendo executado, o problema está no desempenho do PHP / no desempenho do script PHP.

Sim, você pode aumentar o tempo máximo de execução sem causar um grande impacto em outro lugar (embora a configuração via ini_set () / set_time_limit () em um script por script seja mais pura do que uma configuração global). Mas verifique se você está usando um cache opcode, e se o script php está tentando analisar os dados, tenha cuidado com os problemas de dados / analisadores.

    
por 28.03.2012 / 13:45
2

Existem dois propósitos da configuração max_execution_time :

  1. Protegendo você contra códigos inválidos, como loops infinitos.
  2. Impede que o PHP seja processado com desperdício depois de adivinhar que o cliente já desistiu.

Configurar um valor alto só afetará desempenho se você tiver scripts que façam uma das duas coisas acima.

Verifique seus registros de erros para ver com que frequência (se houver) você excedeu esse tempo antes de alterá-lo.

Você pode alterá-lo seletivamente usando ini_set() no código PHP que requer mais tempo.

    
por 28.03.2012 / 09:56
1

Como diz @Ladadadada, max_execution_time configuração não afetará o desempenho do seu servidor. Caso contrário, se você não quer definir um valor muito alto, eu pessoalmente me refiro ao upload_max_filesize configuração.

Conhecendo a largura de banda do servidor e testando alguns uploads, você poderá encontrar uma taxa de upload média (reduza essa taxa para cuidar de usuários com baixa largura de banda). Isso ajudaria a definir um valor reasonnable max_execution_time .

    
por 28.03.2012 / 10:12