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
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.
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.
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.
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.
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
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)
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.
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.
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
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.