2010-04-19 13 views
0

Est-ce que PHP supporte quelque chose comme esperluette dans bash (forking)? Disons que je voulais utiliser simultanément cURL sur 2 pages web, donc le script ne doit pas attendre avant la fin de la première commande de cURL, comment pourrait-on y parvenir en PHP? Quelque chose comme ça dans bash:Est-ce que PHP a un contrôle de travail comme le fait bash?

curl www.google.com & 
curl www.yahoo.com & 
wait 

Répondre

1

Vous pouvez utiliser popen ou proc_open pour ouvrir un processus et le laisser tourner en arrière-plan, mais il n'y a pas de soutien linguistique pour les opérations de base comme il est pour bash (qui a été fait pour exécuter des tâches, de toute façon, PHP a été fait pour les scripts des trucs).

En utilisant 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 d'équivalent wait.

0

Vous pouvez écrire des méthodes asynchrones si vous le voulez vraiment, mais c'est beaucoup de travail, et probablement une idée de conception terrible si vous utilisez PHP.

+1

Comment écrire des méthodes asynchrones avec PHP? – zneak

+0

http://netevil.org/blog/2005/may/guru-multiplexing –

0

Un type 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 billet de blog sur la file d'attente de travail de Zend Server qui parle de l'exécution asynchrone des tâches Do you queue? Introduction to the Zend Server Job Queue.

Vous pouvez également utiliser quelque chose comme les classes Zend Framework Queuing pour implémenter une partie du travail asynchrone. Zend_Queue