как реализовать многопоточность на пхп?
хочу, чтобы параллельно можно было создавать несколько соединений
да насчет многозадачнасти давно поднимал эту тему. Мне необходимо было получать информацию с 4 поисковиков в xml формате и потом их выводить. Естественно важную роль играла скорость. Но в пхп можно получать данные многопоточно по средством сокетов или Курл.
Пример:
function multi_read($connomains, $max_threads){ $mh = curl_multi_init(); foreach ($connomains as $i => $url) { $conn[$i] = curl_init($url); curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1); curl_multi_add_handle ($mh,$conn[$i]); } do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($active and $mrc == CURLM_OK) { if (curl_multi_select($mh) != -1) { do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } if ($mrc != CURLM_OK) { print "Curl multi read error $mrc\n"; } foreach ($connomains as $i => $url) { if (($err = curl_error($conn[$i])) == '') { $res[$i]=curl_multi_getcontent($conn[$i]); } else { print "Curl error on handle $i: $err\n"; } curl_multi_remove_handle($mh,$conn[$i]); curl_close($conn[$i]); } curl_multi_close($mh); return($res); } $connomains = array( "http://yandex.ru", "http://google.ru", "http://rambler.ru", "http://yahoo.com" ); $dataxml = multi_read($connomains, count($connomains));