Après que Harvey Hardware Network soit passé à une nouvelle plate-forme de diffusion d'informations la semaine dernière, en raison de besoins temporaires, la plate-forme d'information d'origine n'a pas été complètement arrêtée. Par conséquent, après le début de l'utilisation de la nouvelle plate-forme, un casse-tête a été découvert sur la page d'accueil du site Web. est toujours mis à jour avec le contenu original du système, ce qui finit par empêcher l'accès normal à un certain lien d'actualité. Le nouveau système a optimisé l'URL et l'URL de la page d'actualités est différente du système d'origine. Au début, je pensais que c'était parce que quelqu'un utilisait encore l'ancien système, mais la situation s'est toujours produite le lendemain, alors j'ai pensé que cela pourrait être un problème avec l'ancien système. Plus tard, j'ai vérifié et découvert que le système Empire CMS avait. une tâche par défaut consistant à actualiser la page d'accueil, je l'ai donc annulée. Après cela, la page d'accueil du site Web sera mise à jour normalement.
Après avoir résolu ce problème, je me suis intéressé aux tâches PHP. J'en avais entendu parler auparavant, mais je ne les avais pas vraiment pratiquées. Peut-être en raison de l'importance de cette fonction pour le développement de systèmes de sites Web, j'ai décidé de l'étudier maintenant et d'écrire un ensemble de tâches. Code mature pour une application future.
La première consiste à rechercher des informations pertinentes en ligne. En lisant ces informations, je sais que les tâches PHP peuvent être grossièrement divisées en trois catégories.
Tâches planifiées du serveur
Le serveur WIN peut utiliser directement des tâches planifiées pour exécuter des applications associées, et le serveur Linux peut être implémenté en ajoutant des tâches planifiées dans /etc/crontab.
Exécution automatique des tâches via une boucle infinie
Créez une page de fichier de programme et utilisez ignore_user_abort pour la définir pour qu'elle soit exécutable après la fermeture de la page du navigateur. Ensuite, après avoir exécuté la page du programme, le plan de tâches dont vous avez besoin sera toujours automatiquement exécuté. Pour les programmeurs PHP ordinaires, s'ils ne sont pas suffisamment confiants, cette opération n'est pas autorisée, car une boucle infinie peut facilement provoquer le crash du serveur.
Tâches planifiées déclenchées
Parmi les nombreux programmes que je connais, tels que Discuz, Empire CMS, etc., ils utilisent tous cette méthode pour effectuer les tâches planifiées du système. Par rapport aux deux méthodes précédentes, c'est la plus sûre et la plus simple.
Il y a tellement de choix que lors de la conception d’un programme, vous devez choisir la manière la plus appropriée de programmer en fonction des besoins réels. Donnons une introduction à l’aide d’exemples.
Le magazine électronique d'AiLiterature.com a été produit peu de temps après le lancement du site Web. Il s'agit d'un magazine électronique envoyé par courrier électronique. L'envoi du dernier numéro du magazine électronique aux boîtes aux lettres des abonnés est une tâche énorme, simplement par lots. L'envoi de pages ne fonctionne évidemment pas. La raison principale est qu'il n'existe actuellement pas de serveur de messagerie propre, comme les boîtes aux lettres fournies par News, Tencent et 163. Bien qu'elles prennent en charge SMTP pour envoyer des e-mails, elles ne permettent pas l'envoi de gros lots d'e-mails. Les conditions sont limitées. donc cela ne peut être résolu que par des programmes.
Tout d'abord, j'ai choisi une tâche planifiée déclenchée. Afin d'éviter que le programme qui envoie des e-mails n'affecte l'expérience de visite du site Web de l'utilisateur, principalement la vitesse d'ouverture de la page du site Web, j'ai choisi d'utiliser Ajax pour implémenter le déclencheur. Ajoutez une fonction de déclenchement au fichier JS public et les utilisateurs peuvent déclencher la tâche d'envoi d'e-mails lorsqu'ils visitent n'importe quelle page.
Afin de limiter la fréquence d'envoi des e-mails et d'éviter qu'ils ne soient bannis par le serveur de messagerie en raison d'envois d'e-mails trop fréquents, des délais sont également définis dans le programme. RAND est utilisé pour générer aléatoirement un temps d'attente pour résoudre le problème. l'envoi d'e-mails n'est pas un intervalle fixe. En fait, l'intervalle en mode déclencheur est Le temps est intrinsèquement incertain, mais lorsque le site Web a un grand nombre de visites, de tels problèmes peuvent toujours survenir, il est donc plus sûr d'y ajouter des paramètres. égard.
Malgré les mesures ci-dessus, dans les applications actuelles, il est toujours interdit au serveur de messagerie d'envoyer des e-mails, mais cela n'est pas interdit de manière permanente. La façon de résoudre ce problème consiste à créer un tableau pour enregistrer les paramètres SMTP des différents services de messagerie. Lorsqu'un serveur de messagerie ne peut pas envoyer de courrier normalement, il passe automatiquement à un autre serveur de messagerie.
Dans la liste des adresses e-mail collectées, il y aura des adresses invalides. Pendant le processus d'envoi d'e-mails, si l'envoi échoue une fois, passez à un autre serveur de messagerie et envoyez à nouveau. Si aucune des deux ne réussit, définissez cette adresse e-mail sur Si elle est invalide. , plus aucun e-mail ne sera envoyé à cette adresse à l'avenir, améliorant ainsi l'efficacité de la liste d'adresses e-mail et permettant de gagner du temps pour l'envoi d'e-mails la prochaine fois.
Certains amis disent que je suis trop avare et que je partage trop peu de code dans ce type de blog. En fait, lorsque nous recherchons des informations sur Internet, nous constatons que les codes partagés par de nombreux sites Web ne sont pas forcément pratiques, et parfois nous le sommes. retardé à cause de la référence à ces codes. Beaucoup de temps, donc lors du résumé, je résume souvent les méthodes pour résoudre le problème et j'écris les paramètres techniques clés afin de pouvoir avoir des informations de référence lorsque je rencontrerai des problèmes similaires à l'avenir. Si vous avez des questions à ce sujet, vous pouvez me contacter par message ou par e-mail.
L'espace personnel de l'auteur Happy Boy