PHP a-t-il un contrôle du travail comme Bash le fait-il?
-
27-09-2019 - |
Question
PHP soutient-il quelque chose comme Ampersand dans Bash (Forking)? Supposons que je voulais utiliser Curl sur 2 pages Web simultanément, donc le script n'a pas à attendre avant les premiers finnois de la commande de curl, comment peut-on y parvenir en PHP? Quelque chose comme ça dans bash:
curl www.google.com &
curl www.yahoo.com &
wait
La solution
PHP soutient-il quelque chose comme Ampersand dans Bash (Forking)?
Non. Voir les autres réponses, bien que je souligne que l'extension PCNTL est uniquement UNIX.
... Comment peut-on y parvenir en PHP? *
Curl prend en charge l'exécution de plusieurs téléchargements simultanément.
Autres conseils
Vous pouvez utiliser popen
ou proc_open
pour ouvrir un processus et le laisser s'exécuter en arrière-plan, mais il n'y a pas de support linguistique pour les opérations d'arrière-plan comme pour bash
(qui a été conçu pour exécuter des tâches, de toute façon; PHP a été conçu pour les scripts).
À l'aide de proc_open, vous pouvez ensuite utiliser proc_get_status
pour savoir quand les processus sont terminés. J'ai peur qu'il n'y ait pas wait
équivalent.
Vous pouvez écrire des méthodes asynchrones si vous le souhaitez vraiment, mais c'est beaucoup de travail, et probablement une idée de conception terrible si vous utilisez PHP.
Une sorte de mécanisme de mise en file d'attente est souvent préférable. Gearman est un mécanisme de mise en file d'attente open source que vous pouvez utiliser. J'ai également un article de blog sur la file d'attente de l'emploi Zend Server qui parle de l'exécution de tâches de manière asynchrone Faites-vous la queue? Introduction à la file d'attente de l'emploi Zend Server.
Vous pouvez également utiliser quelque chose comme les classes de mise en file d'attente du framework Zend pour implémenter une partie du travail asynchrone. Zend_queue