PDA

Voir la version complète : PHP: Utilisation de curl_init, curl_exec dans les taches programmées


bcolas
07/09/2007, 08h37
Bonjour,

développant un site avec intégration à des web services externes à mon site, je réussis à utiliser parfaitement les fonctions curl_init, curl_exec, ... en intéractif, ie dans des pages PHP.

J'ai besoin pour des traitements un peu plus long que j'aimerais exécuter sous forme de taches programmées. J'utilise exactement la même classe dans les deux cas bien sûr et j'obtiens l'erreur CURL suivante:
CURLE_COULDNT_CONNECT (7) : Failed to connect() to host or proxy.

Je vous joins le bout de code qui effectue la connexion:
//build headers using variables passed via constructor
$headers = $this->buildHeaders();

//initialise a CURL session
$connection = curl_init();
//set the server we are using (could be Sandbox or Production server)
curl_setopt($connection, CURLOPT_URL, $this->serverUrl);

//stop CURL from verifying the peer's certificate
curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0);

//set the headers using the array of headers
curl_setopt($connection, CURLOPT_HTTPHEADER, $headers);

//set method as POST
curl_setopt($connection, CURLOPT_POST, 1);

//set the XML body of the request
curl_setopt($connection, CURLOPT_POSTFIELDS, $requestBody);

//set it to return the transfer as a string from curl_exec
curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);

//Send the Request
$response = curl_exec($connection);

//close the connection
curl_close($connection);

Je vous remercie pour votre aide.
Benoit

amadeus
07/09/2007, 08h48
Il faut que tu en dises plus, en cron par exemple je crois que les prog n'ont pas accès à l'extérieur.
Ton plan ? ton script tu l'appelles comment ? ETC....

bcolas
07/09/2007, 10h10
Je suis en 90 Plan, il s'agit d'un script PHP 5 et je déclare en entête de script:
#!/usr/local/bin/php.BETA -q

je lance mon script
soit directement ./<nom_du_script>.php
soit /usr/local/bin/php.BETA -q <nom_du_script>.php

Benoit

amadeus
07/09/2007, 10h47
Un ptit test simple :
connexion en SSH sur un 90Plan
puis :
> wget http://www.yahoo.com
--11:56:22-- http://www.yahoo.com/
=> `index.html'
Résolution de www.yahoo.com... 87.248.113.14
Connexion vers www.yahoo.com|87.248.113.14|:80...échec: Le réseau n'est pas accessible..

Conclusion : pas d'accès extérieur en ssh

bcolas
07/09/2007, 22h14
Merci beaucoup pour le coup de main.
Néanmoins, y'a-t-il une solution à mon problème ?

J'ai besoin d'appeler une URL externe à intervalle régulier pour une intégration avec des solutions extérieures.

amadeus
08/09/2007, 08h22
Deux solutions :
Webcron
Ou un dédié.

Mais aucune solution au niveau de ton 90Plan

NazzTazz
25/10/2007, 21h42
separer ton operation en plusieurs operations < MAX_EXEC_TIME

doubler ton script:

./appel.pl:

$foo = `lynx --dump http://tondomaine/tonscript.php`;

et tu mets ton script a la racine de ton www.