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
Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top