Executar comandos em sequencia milhares de vezes

15/07/2023

0

PHP

Boa noite, Criei um sistema no qual precisa realizar varios comandos várias vezes, a principio hoje eu criei uma tarefa onde um cron é executado a cada 2 minutos, nessa tarefa o php faz um loop em uma tabela do banco com milhares de linhas onde executa várias funções em cada linha percorrida, porem as vezes demora tipo 0:30 segundos, mas dependendo demora até mais que 2 minutos para percorrer todas as linhas necessárias. Isso faz com que tenhamos uma perca grande de tempo, pois se ele demora 30 segundos o restante do tempo fica perdido até o proximo cron iniciar..

alguém tem sugestão do que poderia ser feito para executar essa tarefa de maneira sem interrupção e sem precisar utilizar cron?



Obrigado
Rodrigo Jacinto

Rodrigo Jacinto

Responder

Posts

15/07/2023

Frank Hosaka

A minha sugestão é pedir para o PHP fazer auditoria no banco de dados uma vez por ano e não uma vez a cada dois minutos.
Responder

17/07/2023

Arthur Heinrich

Quando você coloca a lógica na aplicação, a cada linha retornada por um cursor gera um novo comando no banco, independente.

Parte do tempo de execução tem a ver com a lógica do programa, montar o comando, enviar e receber através da rede, executar o parse do comando no banco, etc. Isto adiciona um tempo considerável ao processo.

A maneira correta de se fazer isso é executando uma stored procedure, fazendo com que o loop e os comandos individuais sejam executados diretamente na camada do banco. Com isso, além de eliminar a camada de rede da jogada, o banco pré-compila a procedure e elimina o parse a cada comando executado no loop.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar