Alternativas para Cron

0

Estou fazendo um servidor rodando o Ubuntu Server 12.04 e o Apache. Os usuários têm atualizações contínuas nas páginas dinâmicas através de um script Java, baixando arquivos JSON através do pedido Ajax para o servidor. Todos os usuários precisam dos mesmos dados fornecidos por um arquivo PHP de um banco de dados mySQL secundário. Para reduzir a carga do servidor, decidi atualizar o arquivo JSON a cada segundo e salvá-los no servidor, fornecendo-os como conteúdo estático (como um arquivo txt). Por essa razão, eu preciso de uma solução para executar um PHP ou qualquer outro script de idioma no servidor a cada segundo.

Para necessidades futuras, não consigo implementar uma lógica como: compilar o JSON na primeira solicitação e mantê-lo salvo para as outras solicitações no mesmo segundo.

Eu li sobre o CronTab no Ubuntu, mas ele não me permite executar o código a cada segundo. Eu pensei em mudar todo o código do Cron porque não consigo encontrar outras soluções.

Alguém sabe se existe alguma solução no Ubuntu ou talvez nos códigos do Apache para fazer isso? Eu preciso de algo estável e confiável. Alguém já ouviu falar de um sistema para executar código no servidor sem a necessidade de solicitações; manipular dados a cada segundo?

Qualquer sugestão é bem-vinda, mesmo complexa, mas para um resultado confiável!

    
por svara 19.09.2014 / 03:23

1 resposta

1

Eu não tenho idéia do que você disse nos dois primeiros parágrafos, então eu não posso dizer se há uma solução melhor (meus instintos gritam que deveria haver).

Para executar um comando em intervalos de X segundos, há muitas opções, discutidas nesta pergunta sobre estouro de pilha e este Unix & amp; Linux pergunta .

Execução de comando um segundo após o comando anterior terminar

Simplificando, use um script como este:

#! /bin/bash
while sleep 1
do
   # your commands
done

Execução de comando um segundo após o início do comando anterior

O mesmo que acima, mas você envia o comando para o segundo plano. Isso resultará em execuções de comandos sobrepostas se o comando demorar mais de 1 segundo para ser concluído.

#! /bin/bash
while sleep 1
do
   (# your commands )&
done

Agora, para garantir que o script esteja sendo executado, use um trabalho do Upstart :

description "a good description"
start on runlevel [!016]
stop on runlevel [016]

respawn

exec /path/to/the/above/script

Salvar este é um arquivo .conf em /etc/init , como /etc/init/some-job.conf . Agora você pode iniciar o script com:

service some-job start

A opção respawn fará com que o Upstart reinicie o script se ele sair (não deveria).

    
por muru 19.09.2014 / 04:05