Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
function multiRequest($data, $Timeout, $options = array()) {
$curly = array();
$result = array();
$mh = curl_multi_init();
foreach ($data as $id => $d)
{
$curly[$id] = curl_init();
$url = (is_array($d) && !empty($d['url'])) ? $d['url'] : $d;
curl_setopt($curly[$id], CURLOPT_URL, $url);
curl_setopt($curly[$id], CURLOPT_HEADER, 0);
curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curly[$id], CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curly[$id], CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)');
if (is_array($d))
if (!empty($d['post']))
{
curl_setopt($curly[$id], CURLOPT_POST, 1);
curl_setopt($curly[$id], CURLOPT_POSTFIELDS, $d['post']);
}
if (!empty($options)) curl_setopt_array($curly[$id], $options);
curl_multi_add_handle($mh, $curly[$id]);
}
$running = null;
$Start = microtime(true);
do {
usleep(100000);
$mrc = curl_multi_exec($mh, $running);
usleep(100000);
} while($running and (microtime(true) - $Start < $Timeout));
foreach($curly as $id => $c)
{
$result[$id] = curl_multi_getcontent($c);
curl_multi_remove_handle($mh, $c);
}
curl_multi_close($mh);
return $result;
}
слышал подобное раньше, но в последнее время когда загружал носки - всё хорошо было. Какие именно носки не работают с курлом?2) Из-за известного бага в библиотеке curl, такой код не будет работать с socks проксями, только напрямую или с http-проксями.
очень значительный, особенно если с проксями.ест ли какой-то прирост в скорости исполнения?
да, лучше делать очередь и постоянно добавлять новые урлы в процессе, правда есть беда с <5.3 пхп- сервер может умереть их за бага в курл_селект. Но это обходится довольно изящно - создаются не курлы, а мультикурлы, которые можно опросить вручную.ну фактически данная функция уменьшит время получения данных с суммы всех времен элементов (при работе в один поток) до времени получения самого медленного элемента в списке. Естественно если хватит канала.
Хм, а качество результата- хорошее? Ибо я пытался сделать прокси чекер- ооочень долго парсит, несравнимо с соксами, да и половина вроде бы рабочих- сразу подыхает. + носки как я понимаю не чекаешь? У меня курл за носки принимал половину обычных, даж не анонимных проксейPS У меня уже лет 8 крутится скрипт - прокси чекер именно используя подобную функцию,