Depois que a Harvey Hardware Network mudou para uma nova plataforma de comunicados de imprensa na semana passada, devido a necessidades temporárias, a plataforma de notícias original não foi completamente interrompida. Portanto, depois que a nova plataforma começou a ser usada, foi descoberta uma dor de cabeça. é sempre atualizado com o conteúdo original do sistema, eventualmente fazendo com que determinado link de notícias não possa ser acessado normalmente. O novo sistema otimizou a URL, e a URL da página de notícias é diferente do sistema original. A princípio pensei que era porque alguém ainda estava usando o sistema antigo, mas a situação ainda aconteceu no dia seguinte, então pensei que poderia ser um problema com o sistema antigo. Mais tarde, verifiquei e descobri que o sistema Empire CMS tinha. uma tarefa padrão de atualização da página inicial, então cancelei. Depois disso, a página inicial do site será atualizada normalmente.
Depois de resolver esse problema, me interessei pelas tarefas de PHP que já havia aprendido sobre elas, mas ainda não as praticava. Talvez considerando a importância dessa função para o desenvolvimento de sistemas de sites, decidi estudá-las agora e escrever um conjunto de. Código maduro para aplicação futura.
A primeira é pesquisar informações relevantes online. Ao ler essas informações, sei que as tarefas do PHP podem ser divididas em três categorias.
Tarefas agendadas do servidor
O servidor WIN pode usar tarefas agendadas diretamente para executar aplicativos relacionados, e o servidor Linux pode ser implementado adicionando tarefas agendadas em /etc/crontab.
Execução automática de tarefas através de loop infinito
Crie uma página de arquivo de programa e use ignore_user_abort para configurá-la para ser executável após fechar a página do navegador. Depois de executar a página do programa, o plano de tarefas necessário será sempre executado automaticamente. Para programadores PHP comuns, se não estiverem confiantes o suficiente, esta operação não é permitida, porque um loop infinito pode facilmente causar a falha do servidor.
Tarefas agendadas acionadas
Entre os vários programas que conheço, como Discuz, Empire CMS, etc., todos utilizam este método para realizar as tarefas agendadas do sistema. Comparado com os dois métodos anteriores, este é o mais seguro e simples.
Existem tantas opções, portanto, ao projetar um programa, você deve escolher a forma mais adequada de programar com base nas necessidades reais. Vamos fazer uma introdução usando exemplos.
A revista eletrônica AiLiterature.com foi produzida logo após o lançamento do site. Esta é uma revista eletrônica entregue por e-mail. Enviar a última edição da revista eletrônica para as caixas de correio dos assinantes é uma tarefa enorme, simplesmente em lote. O envio obviamente não funciona. A principal razão é que atualmente não existe um servidor de e-mail próprio, como as caixas de correio fornecidas por News, Tencent e 163. Embora suportem SMTP para envio de e-mails, não permitem o envio de grandes lotes de e-mails. então só pode ser resolvido através de programas.
Primeiramente optei por uma tarefa agendada disparada Para evitar que o programa que envia e-mails afete a experiência de visita do usuário ao site, principalmente a velocidade de abertura da página do site, optei por utilizar Ajax para implementar o gatilho. Adicione uma função de gatilho ao arquivo JS público e os usuários poderão acionar a tarefa de envio de e-mail quando visitarem qualquer página.
Para limitar a frequência de envio de emails e evitar que sejam banidos pelo servidor de email devido ao envio excessivamente frequente de emails, também são definidos limites de tempo no programa para gerar aleatoriamente um tempo de espera para resolver o problema que. o envio de e-mails não é um intervalo fixo. Na verdade, o intervalo no modo de disparo é O tempo é inerentemente incerto, mas quando o site tem um grande número de visitas, tais problemas ainda podem ocorrer, por isso é mais seguro adicionar configurações neste. respeito.
Apesar das medidas acima, em aplicações reais ainda se verifica que o servidor de e-mail estará proibido de enviar e-mails, mas não está permanentemente proibido. A maneira de resolver esse problema é criar um array para salvar os parâmetros SMTP de diferentes serviços de correio. Quando um servidor de correio não consegue enviar mensagens normalmente, ele irá automaticamente para outro servidor de correio.
Na lista de endereços de e-mail coletados, haverá alguns endereços inválidos. Durante o processo de envio de e-mails, se o envio falhar uma vez, mude para outro servidor de e-mail e envie novamente. Se nenhum deles tiver sucesso, defina este endereço de e-mail como Se for inválido. , nenhum e-mail será enviado para esse endereço no futuro, melhorando assim a eficiência da lista de endereços de e-mail e economizando tempo para enviar e-mails na próxima vez.
Alguns amigos dizem que sou muito mesquinho e compartilho muito pouco código neste tipo de blog. Na verdade, quando buscamos informações na Internet, descobrimos que os códigos compartilhados por muitos sites não são necessariamente práticos, e às vezes somos. demorado devido à referência a esses códigos, por isso, ao resumir, geralmente resumi os métodos para resolver o problema e anoto os principais parâmetros técnicos para que possa ter informações de referência ao encontrar problemas semelhantes no futuro. Se você tiver alguma dúvida a esse respeito, pode entrar em contato comigo por mensagem ou e-mail.
O espaço pessoal do autor Happy Boy