2010-06-24 8 views
12

En supposant que je suis une grande recrue d'unix, - Je cours une demande de boucle par le biais de cron toutes les 15 minutes. - Curl est utilisé essentiellement pour charger une page web (php) que, compte tenu des arguments, agit comme un script comme:Comment exécuter plusieurs requêtes curl, traitées séquentiellement?

curl http://mysite.com/?update_=1

Ce que je voudrais réaliser est d'exécuter un autre « script » en utilisant cette boucle technique, - à chaque fois que l'autre script est exécuté - avant que l'autre script est exécuté

J'ai lu que boucle accepte plusieurs urls en une seule commande, mais je ne suis pas sûr que cela traiterait les ULR séquentiellement ou en « parallèle ".

Répondre

22

Il traiterait probablement de manière séquentielle (pourquoi ne pas juste le tester). Mais vous pouvez aussi le faire:

1) faire un fichier appelé curlrequests.sh 2) mettre dans un fichier comme ainsi:

curl http://mysite.com/?update_=1 
curl http://mysite.com/?update_=3 
curl http://mysite.com/?update_=234 
curl http://mysite.com/?update_=65 

3) enregistrer le fichier et le rendre exécutable avec chmod:

chmod +x curlrequests.sh 

4) exécuter votre fichier:

./curlrequests.sh 

ou

/path/to/file/curlrequests.sh 

Comme une note de côté, vous pouvez les demandes de la chaîne avec & &, comme celui-ci:

curl http://mysite.com/?update_=1 && curl http://mysite.com/?update_=2 && curl http://mysite.com/?update_=3 

et Execute en parallèle à l'aide &:

curl http://mysite.com/?update_=1 & curl http://mysite.com/?update_=2 & curl http://mysite.com/?update_=3 
+0

Timoty, se demande enchaînées comme boucle http://mysite.com/?update_=1 && boucle http://mysite.com/?update_=2 && ...... exécuter de manière séquentielle? – Riccardo

+0

Oui, dans la plupart des cas, ils le seront, mais si l'un d'entre eux se retrouve avec une erreur (valeur de retour autre que 0), les éléments suivants ne seront pas exécutés. – mbq

+0

c'est parfait pour moi. Merci! – Riccardo

1

écrire un script avec deux demandes curl dans l'ordre désiré et l'exécuter par Cron, comme

#!/bin/bash 
curl http://mysite.com/?update_=1 
curl http://mysite.com/?the_other_thing 
0

Je pense que cela utilise des capacités plus natives

//printing the links to a file 
$ echo "https://stackoverflow.com/questions/3110444/ 
https://stackoverflow.com/questions/8445445/ 
https://stackoverflow.com/questions/4875446/" > links_file.txt 


$ xargs curl < links_file.txt 

Amusez-vous!

Questions connexes