Je suis actuellement en train de construire une API à Laravel (PHP) pour récupérer les prix de différents hôtes. Il y a actuellement 756 'pièces' différentes avec différents hôtes pour récupérer les prix.Meilleure façon de planifier une grande quantité de tâches en PHP
Par exemple: Coin X
Hôte 1 Hôte 2 hôte 3 - jusqu'à 30 hôtes
Coin Y
hôte 1 hôte 4 hôte 5 - jusqu'à 30 hôtes etc.
Le problème ici est que, idéalement, chaque pièce devrait être mise à jour toutes les 10 secondes. Cela signifie que chaque pièce doit appeler tous ses hôtes, calculer le prix moyen, enregistrer le prix dans la base de données et enfin enregistrer un fichier JSON avec l'historique total de la pièce. (Peut-être serait-il préférable d'enregistrer le prix actuel en JSON pour gagner du temps)
J'ai essayé de mettre tout cela dans une classe pour chaque hôte, mais le temps d'exécution est beaucoup trop long (environ 5 minutes). minutes en utilisant CURL).
Je pense à créer une tâche (travail cron) pour chaque pièce. De cette façon, la mise à jour des pièces peut être synchronisée (plusieurs pièces à la fois). Mais je ne suis pas sûr que ce serait le meilleur moyen.
Quelle approche recommanderiez-vous? Tous les conseils sont les bienvenus.
Salut Hayden, Merci pour votre réponse. Le temps moyen pour une demande est d'env. 500 - 700 ms. Si je comprends bien, suggérez-vous de mettre toutes les demandes dans un CURL_MULTI? Je n'ai pas encore testé cela, mais un bon appel. – Thjeu
Je n'ai pas eu beaucoup à faire avec CURL (seulement des requêtes simples simples), sans googling je n'aurais aucune idée si elle peut faire des demandes simultanées en même temps. Mais tout ce que vous pouvez faire cela vaudra la peine d'essayer. Vous aurez probablement toujours besoin d'un travail cron pour appeler le script php à intervalles, si vous pouvez faire plusieurs appels dans une fonction ou faire plusieurs appels d'une fonction. –
Wow, je viens de lancer tout le processus avec curl_multi et réduit le temps à 12 secondes. C'est bien. Je peux travailler plus loin d'ici. Merci beaucoup Hayden! – Thjeu