Eu escrevi um script php para verificar se há novos arquivos em uma pasta e, se existirem novos arquivos, carregue-os em um servidor. Esses arquivos podem ser bem grandes. Quero executar esse script com frequência - digamos a cada 5 minutos - como uma tarefa agendada, para que os arquivos sejam movidos para o servidor o mais rápido possível. No entanto, quando o script já está tentando fazer upload de um arquivo, não quero que ele seja executado novamente, pois temo que a segunda instância substitua o arquivo que já está sendo carregado no servidor.
Como posso executar o script como uma tarefa agendada, a menos que o script já esteja em execução?
fonte
A maneira usual é testar alguma coisa global (geralmente um arquivo vazio específico) quando a tarefa é iniciada. Se existir, a tarefa já está em execução. Caso contrário, defina o item global, faça suas coisas, desmarque o item global quando a tarefa estiver concluída.
Isso tem problemas se a tarefa falhar sem desmarcar a coisa global. Você pode sempre desmarcá-lo na rotina de inicialização do computador, pois a tarefa não pode ser executada se você reiniciar. Melhor é encontrar uma coisa global que desaparece automaticamente quando a tarefa termina.
fonte