2010-09-11 5 views
0

J'utilise curl, je me demande comment pourrais-je envoyer des messages/soumettre des données sur ma page à ces sites? Le site web a "hôte, heure, port". Ma base de données MYSQL a une liste d'URL. Je pensais à curl_multi mais je ne suis pas sûr.PHP - Comment envoyer une requête à des sites Web?

S'il vous plaît, quelqu'un publie des exemples. Cela doit être une méthode rapide.

Fondamentalement feteches l'url et le courrier.

while($resultSet = mysql_fetch_array($SQL)){     
    $ch = curl_init($resultSet['url'] . $fullcurl); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 2);   
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
} 
+0

Je suis légèrement confus par votre question. S'agit-il d'envoyer des données POST (auxquelles j'ai répondu) ou d'envoyer plusieurs demandes? – Matchu

+0

Envoi de $ host, $ time, $ port à plusieurs URL dans ma base de données. – Ray

Répondre

0

Voici un exemple sur la façon de le faire avec curl_multi. Bien que vous deviez le décomposer, vous ne disposez que d'un certain nombre d'URL à la fois (c'est-à-dire 30). J'ai ajouté la directive de localisation suivante, que vous voulez habituellement.

$mh = curl_multi_init(); 
$ch = array(); 
while($resultSet = mysql_fetch_array($SQL)){     
    $ch[$i] = curl_init($resultSet['url'] . $fullcurl); 
    curl_setopt($ch[$i], CURLOPT_TIMEOUT, 2); 
    curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch[$i], CURLOPT_FOLLOWLOCATION, true); 
    curl_multi_add_handle($mh, $ch[$i]); 
} 
$running = null; 
do { 
    curl_multi_exec($mh,$running); 
} while ($running > 0); 
$num = count($ch); 
for ($i=0; $i<$num; $i++) { 
    curl_multi_remove_handle($mh, $ch[$i]); 
} 
curl_multi_close($mh); 
+0

Puis-je demander, à quoi servent ces pièces? "curl_setopt ($ ch [$ i], CURLOPT_FOLLOWLOCATION, true);" "curl_multi_exec ($ mh, $ en cours d'exécution); while ($ running> 0); $ num = count ($ ch); pour ($ i = 0; $ i <$ num; $ i ++) { curl_multi_remove_handle ($ mh, $ ch [$ i]); " – Ray

+0

Aussi," curl_setopt ($ ch [$ i], CURLOPT_TIMEOUT, 2); " Je fais des recherches et trouve ceci "usleep (100000);" que font-ils? Veuillez ajouter des commentaires sur le code. – Ray

1

The PHP cURL reference dit que l'option CURLOPT_POST, mis à true, en fait une requête POST. CURLOPT_POSTFIELDS définit les champs que vous allez envoyer au format foo=bar&spam=eggs (que l'on peut construire à partir d'un tableau avec http_build_query).

curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 'foo=bar&spam=eggs'); 
+0

J'ai déjà quelque chose de similaire "$ fullcurl ="? Host = "$ fullcurl ="? Ici = ". $ Ici." & Cash = ". $ Cash." & Weet = ". $ Weet;". Plus d'aide? – Ray

0

Donnez ce un coup:

while ($resultSet = mysql_fetch_assoc($SQL)) { 
    $ch = curl_init($resultSet['url']); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch, CURLOPT_TIMEOUT,2); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fullcurl); 
    $response = curl_exec($ch); 
    curl_close(); 
} 
+0

Je l'ai sur "$ ch = curl_init ($ resultSet ['url']. $ Fullcurl);", ce qui serait recommandé de remplacer? J'ai ceci codé "curl_multi_add_handle ($ mh, $ ch);" ... Confus ici. Besoin d'aide à nouveau – Ray

+0

n'ajoutent pas fullcurl à l'url .. ce sont les postfields. il devrait être dans le format key = value & key2 = value2 .. enlever le point d'interrogation du début de votre $ fullcurl et exécuter mon code. – Fosco

Questions connexes