Geração de Código Fonte - TimeOut 300s

Meus Caros,

Estou fazendo uma rotina bastante longa, e na hora de gerar o código fonte estou recebendo o seguinte erro:

Fatal error: Maximum execution time of 300 seconds exceeded in C:\Program Files (x86)\NetMake\v71\wwwroot\scriptcase\prod\third\adodb\drivers\adodb-mysql.inc.php on line 365

Tem como alterar esse parametro de tempo ???

Em qualquer servidor que você for hospedar depois você vai ter no máximo 240 ms, a sugestão seria tentar usar o BANCO DE DADOS, para fazer PROCEDURES e VIEWES para já deixar os dados que você precisa no ponto, para você finalizar com o SCRIPTCASE é assim que eu faço.

PHP não funciona igual um COBOL ou um programa DESKTOP que pode ficar rodando uma ROTINA dias até finalizar um processo.

1 Curtida

Jailton,

O problema da demora não é na execução da rotina é na geração do código fonte, a rotina está rodando bem rápido, agora a geração do código por conta da quantidade de linhas, está estourando o limite de tempo do scriptcase.

Que ambiente você esta utilizando para desenvolver?
LOCAL? HOSPEDAGEM WEB?

SCRIPTCASE SC 7.1 - PHP 5.4?

WINDOWS VERSÃO? BITS? MEMORIA?

Quantas linhas tem esta ROTINA?

Total de APLICAÇÕES DO PROJETO?

Base de DADOS FONTES DO SC: SQLITE?

Esta desenvolvendo para que BASE DE DADOS? MySQL?

Caro Jailton,

Vamos lá…

Desenvolvimento está acontecendo em local, num notebook com processador i5 memória ram de 6GB.

O windows é 65bits e o scriptcase é o 7.1 com PHP 5.4.

O sistema tem apenas 19 aplicações, mas neste caso estou tentando gerar somente dessa específica que no momento está com 1.300 linhas de código e ainda deve crescer um pouquinho mais. É uma rotina que busca vários dados no BD e monta uma tabela com inúmeras variáveis estatísticas.

O banco da aplicação é o MySQL.

Não sei lhe informar qual é o banco de dados dos fontes. :frowning:

Ok era isso que eu queria pra entender… ok vamos a solução.

Então quebre sua rotina em MODULOS, entre no formulário que esta a rotina ai vai embaixo em > Programação > Métodos PHP, ai você dividindo ela em módulos e passando parâmetros com os dados entre eles você obtêm o resultado desejado, você pode criar uma biblioteca também para o projeto se desejar.

Abuse das Matrizes Arrays, For, While, Funções para cortar trechos repetitivos dos códigos.

Caro Jailton,

Ok, vou partir para isso então, obrigado pelas dicas e pela sua atenção.

Abração.

Verifique também a diretiva max_execution_time do php.ini.

att,
Bernhard

Estou passando pelo mesmo problema, já dividi em vários métodos mas continua o mesmo erro.Alguém do suporte pode nos ajudar???Fatal error: Maximum execution time of 300 seconds exceeded in C:\Program Files (x86)\NetMake\v71\wwwroot\scriptcase\prod\third\adodb\drivers\adodb-mysql.inc.php on line 365
Full-time: 0:05:01

Já tentarão fazer oque Bernhard disse?

Se usarem o sc 7.1 abra a pasta componentes/php e em seguida procure o php.ini.

Procure:
max_execution_time = 300 // creio que esse valor é o que o SC cria por padrão.

Altere para:
max_execution_time = 600

Se a sua rotina usa dados recorrentes do banco de dados porque vc não cria views no banco pra agilizar o processamento, ou então uma procedure e usa o php apenas pra processar o retorno.
Uma outra opção pra não ter que aumentar direto no php.ini o tempo é s´ó aumentar direto na aplicação.

No menu esquerdo da aplicação vá em:

Aplicações
Configurações
Timeout (altere aqui o timeout dessa aplicação)

Meus caros,

O meu problema não é na execução da aplicação e sim na geração do código fonte, ou seja, o timeout era dado pelo scriptcase e não pela aplicação em si, eu resolvi o problema enxugando o código, evitando repetições e sintetizando ao máximo o código, feito isso a geração do código agora não passa de 30 segundos.

Creio que o SC também usa o PHP.ini para fazer a geração de seu código. Se estiver um código muito grande e o tempo de 300 sec não for suficiente, aumentando-o também resolve o problema. Enxugando seu código foi bom, resolveu, mas talvez se deparar com um código grande que mesmo enxugando o tempo de compilação for maior, tente aumentar essa DIRETIVA no php.ini.

O scriptcase também roda em cima do ambiente PHP, ele é desenvolvido em PHP. Então por lógica sua geração de código usa o PHP, sendo assim o php.ini também serve para o SC, tente mudar a DIRETIVA para 5 sec e tente gerar o código pra ver, eu não tentei, mais creio que vai dar a mesma mensagem.

Almeida,

Sem dúvida, se eu me deparar com isso no futuro novamente e não tiver jeito de otimizar então vou partir para essa alternativa.

Obrigado pela sua atenção.

Mesmo mudando max_execution_time = 3600 no php.ini continua o mesmo erro. Creio que seja um bug, o SC não esta aceitando muitas linhas de código.Tenho um método: function calculo_cartao_credito com 67 linha.
Tipo de aplicação: Formulário Estado: Erro Full-time: 0:05:01
Fatal error: Maximum execution time of 300 seconds exceeded in C:\Program Files (x86)\NetMake\v71\wwwroot\scriptcase\prod\third\adodb\drivers\adodb-mysql.inc.php on line 365

Pode procurar então que tem algum erro de lógica no seu código e o SC não esta conseguindo validar.

67 linhas não é nada, se você abrir uma aplicação gerada vai ver que pra um mero blank sem nada dentro o sc gera um arquivo com mais de 3000 linhas.

Já tive um problema parecido e era erro de lógica na minha aplicação causando com isso dificuldades pro SC encaixar meu código nas rotinas padrões dele. Não me lembro exatamente o que foi mas já passei por um problema parecido.

Roberto,

Com certeza não é a quantidade de linhas, a minha rotina tem cerca de 1500 linhas e está gerando em menos de 1 minuto.

Prezados bom dia. Peço até desculpas por “ressuscitar” o tópico, porém após a atualização do scriptcase para a última versão estou passando por este problema. já atualizei o php.ini para valores superiores aos “300” segundos, porém o erro sempre é este.
Caso alguém tenha encontrado soluções distintas do já colocado aqui e puder ajudar, agradeço.
Saduações.
Erro:

Fatal error: Maximum execution time of 300 seconds exceeded in C:\Program Files (x86)\NetMake\v71\wwwroot\scriptcase8\devel\class\generator\nmDados.class.php on line 5804

Não teria que ser C:\Program Files (x86)\NetMake\v81???

Prezado Jailton boa tarde

Na realidade ficou apenas a pasta, à época que atualizei ficou na mesma pasta do 7.1, porém a versão 8 sempre funcionou legal, apenas agora esta questão com a 8.1 que não consegui alterar o tempo máximo de execução.

Obrigado pela atenção.