2011-03-07 2 views
1
$query = 'SELECT * FROM `chat` LIMIT 0, 24334436743;'; 
$result = mysql_query($query); 
while($row = mysql_fetch_array($result)) { 
$URL = $row['url']; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,"$URL"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
//curl_setopt($ch, CURLOPT_POSTFIELDS, "user=unrevoked clarity&randominfo=hi"); 
curl_exec ($ch); 
curl_close ($ch); 
    } 





//curl_close ($ch); 
} 

D'accord, l'extrait ci-dessus consiste à extraire tout un tas d'URL d'une base de données et j'essaie d'envoyer des données à chacun d'entre eux. Mais il semble gomme la page en place (même avec seulement une ou deux URL). Y at-il un système intégré pour gérer ceci ou quelque chose?URL multiple cUrl ouverte

+1

Pourriez-vous utiliser les requêtes ajax pour la décomposer, de sorte que votre page puisse être réactive et charger les résultats/progresser à la fin d'une requête. – Jacob

+0

J'écris un script de chat mais tous les nœuds sont sur des serveurs différents. Fondamentalement, le nœud frappe ce script que ce script distribue aux autres nœuds. Pas moyen de contourner cela – Michael

Répondre

0

Vous pouvez initialiser plusieurs demandes à l'aide du curl_multi_*() functions, puis les envoyer toutes en même temps. Il y a probablement une limite au nombre de demandes pouvant être regroupées. Et le temps de traitement global prendra aussi longtemps que la connexion/serveur le plus lent.

Votre approche (beaucoup d'URL à la fois) reste donc problématique. Peut-être que vous pouvez le réécrire pour faire le traitement dans votre navigateur, démarrer plusieurs demandes AJAX avec un retour visuel.

0

La demande d'une URL à partir du réseau est une opération coûteuse, et même en télécharger quelques-uns augmentera sensiblement la latence de votre page. Pouvez-vous mettre en cache le contenu des pages dans une base de données? Avez-vous besoin de télécharger l'URL? pouvez-vous faire le client le faire avec un iframe?