2010-11-19 13 views

Répondre

0

Si vous utilisez Windows, vous pouvez utiliser le curl_multi:

// create cURL resource 
$ch = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, "http://domain/path/to/script"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 

//create the multiple cURL handle 
$mh = curl_multi_init(); 

//add the handle 
curl_multi_add_handle($mh,$ch); 

// execute the handle 
curl_multi_exec($mh,$running); 

Mais si vous utilisez Linux, vous pouvez bifurquer trop:

$pid = pcntl_fork(); 
if ($pid == -1) { 
    die('could not fork'); 
} else if ($pid) { // mother process 
    // continue doing stuff here 
    echo 'Child labor '; 
    echo 'is acceptable '; 
    echo 'in programming'; 

    // wait for the child to finish 
    pcntl_wait($status); 
} else { // child process 
    // do big loop here 
    while (...) { 
     sleep(1000); 
    } 
} 
+0

le script fonctionnera pour un heure à l'intérieur d'une boucle, cette boucle va-t-elle déclencher la boucle et sortir? Je ne veux pas que la connexion s'établisse pendant plus d'une seconde –

+0

Bien curl ne se déconnectera pas avant que le script appelant (celui qui s'exécute rapidement) n'existe. Cependant, votre script appelé (celui qui s'exécute lentement) pourrait être tué par Apache quand CURL ferme la connexion. –

+1

Pas réellement quand set_time_limit est mis à zéro et ignore_user_abort mis à vrai –