Copie en file d’attente WP & # 39; API rest sur le fichier
Matt Shaw de Delicious Brains a récemment publié un article sur une nouvelle bibliothèque qu’ils ont créée pour aider à développer un de leurs produits. Cette bibliothèque de files d’attente wp \ u fournit un système de gestion des tâches similaire à laraver pour WordPress. Une file d’attente d’emplois est un système qui vous permet de planifier les emplois à exécuter à l’avenir. Nous avons tendance à utiliser le travail pour deux raisons. Tout d’abord, vous devrez peut – être attendre un certain temps, par exemple, si vous voulez programmer un courriel de suivi dans une semaine. Une autre raison est la performance. Peut – être avons – nous besoin de faire des calculs coûteux, et nous ne voulons pas que les utilisateurs attendent.
Job Manager nous fournit un système de planification, un moyen de stocker les tâches jusqu’à ce qu’elles soient exécutées, et un job Manager, un outil pour les exécuter. WordPress WP _ Cron correspond à cette description. Cependant, avec WP _ queue, j’ai trouvé que c’était mieux adapté à mes besoins. WP _ queue pour une raison ou une autre, les paquets WP queue sont superbes. La première consiste à soustraire les tâches de l’exécution et de l’ordonnanceur. Je peux écrire une classe de travail et la tester en tant qu’unit é autonome. Deuxièmement, l’utilité de la planification est abstraite. Par défaut, les tâches sont enregistrées dans la base de données WordPress, puis programmées au besoin en utilisant WP _ Cron. Mais je peux aussi utiliser un pilote de développement qui les synchronise, et il y a un pilote redis en cours de développement. On y va.
Définir la Bibliothèque de file d’attente wp \ U est un paquet compositeur. Tout d’abord, installez le paquet dans le plug – in: Vous devez ajouter la table de base de données à l’ordonnanceur. Le fichier README Pack contient des instructions. Ajoutez – le au crochet d’activation du plug – in ou n’importe où dans la table d’ajout. Création d’emplois si vous avez déjà utilisé une file d’attente d’emplois laraver, vous connaissez bien la structure de la classe \ \ wp _ queue \ job. Votre classe ouvrière
Ou doit avoir une méthode Handle (). Cette méthode est appelée lors de l’exécution du travail. Vous pouvez également avoir une méthode Construct ().
Le concept clé pour comprendre ces classes est que les attributs de classe sont sérialisés dans la base de données au moment de la planification du travail et utilisés pour créer des instances de classe au moment de l’exécution. Par exemple, supposons que vous créez une tâche à exécuter chaque fois que vous enregistrez un message. Dans la méthode Construct (), vous passez l’ID Post et utilisez ce paramètre pour définir les propriétés. Lorsque vous exécutez la méthode handle, la propriété est définie avec l’ID post. Dans la méthode handle, vous pouvez utiliser cette propriété (ID du billet enregistré enregistré enregistré enregistré enregistré avec la tâche) pour obtenir le billet enregistré à partir de la base de données. Voici à quoi il ressemble:
Copier le json du post dans le fichier après l’enregistrement le travail que nous avons fait jusqu’à présent était d’obtenir le post de la base de données. Bien, nous pouvons lancer un programme d’exécution pour programmer cette tâche à exécuter chaque fois que nous sauvegardons un message et nous assurer que cette tâche reçoit une réponse de l’API rest pour le message sauvegardé et l’écrit dans le fichier json. Revenons à la liste. Pourquoi est – ce arrivé? La dernière exigence sera une classe que je peux tester individuellement et, si possible, configurer l’exécution et me connecter à l’opération Save _ Post, sachant que le travail est réalisable. Si je fais le contraire, je ne sais pas si mon problème est de travailler ou de faire la queue. C’est une mauvaise science.
J’a i écrit une méthode similaire pour exécuter un travail, et j’ai précédemment sauvegardé un article avec torque en utilisant un autre exécuteur de tâches. Json, qui écrit un article sur un fichier, continuera à travailler sur nos classes de travail. On a tout ce qu’il faut pour avoir cet endroit. Nous devons obtenir l’objet de réponse créé par l’api WordPress rest pour le Post, le sérialiser en json et l’écrire dans le fichier. Un peu.
Il n’y a pas si longtemps, j’ai écrit un article pour Torque sur la façon d’obtenir des messages de l’api WordPress rest sans envoyer de requêtes http. J’ai volé la plupart du Code:
C’est tout le travail. J’utilise le contrôle post de l’api WordPress rest pour créer une réponse WP _ rest et j’utilise json encode () pour la définir en chaîne et l’enregistrer dans un fichier appelé Slug post. L’emplacement de stockage et la façon dont les fichiers sont appelés dépendent de vos besoins. Maintenant, nous pouvons créer une instance de cette classe pour voir si elle fonctionne. Nous pouvons l’exécuter directement de cette façon, où $postId est l’ID d’un post publié: Vous devriez donc voir un fichier avec la représentation json du post dans le chemin défini pour écrire le fichier. Nous pouvons également écrire des tests d’intégration pour:
Programmer le travail à faire lors de la mise à jour des messages puisque nous savons que si nous prévoyons exécuter notre travail, nous devons programmer son exécution chaque fois que nous sauvegardons un message. L’opération Save _ post est activée lors de l’enregistrement du message afin que nous puissions l’utiliser. Dans la fonction de rappel, nous créerons une instance de classe de travail et la transmettrons à WP _ queue () – > push (). Il suffit de programmer la mise en œuvre dès que possible. Le deuxième paramètre de la méthode push () qui retarde l’exécution d’une tâche est le délai d’exécution de la tâche. Le dernier exemple de code n’utilise pas ce paramètre. Une fois la file d’attente arrivée, le travail est terminé. Si nous voulons le retarder de 5 minutes, nous pouvons prendre 600 – 5 minutes de secondes – comme deuxième argument.
Dernière étape de la configuration de l’exécuteur de tâches: Nous devons configurer la file d’attente d’exécution. Nous pouvons utiliser la file d’attente WP _ Cron: lors de l’exécution d’un développement local, il est préférable d’utiliser un pilote de synchronisation plutôt qu’un pilote de base de données afin que les tâches puissent être exécutées simultanément immédiatement. C’est le test.