Из данных постов вы можете узнать для себя как использовать мультипотоки в php, а точнее их аналог curl_multi, как интегрировать мулипоточность в однопоточный скрипт, как добавить подключение через прокси и собственно как создать сам чекер, на curl, так же по данной технологии всегадо можно создавать парсеты и анализаторы и множество других ползеных и нужных вещей :)
Ну чтож начнем 1 что нам понадобиться для создания мулти поточность это набор функций мулти курл и самая основная функция здесь curl_multi_init или русский вариант (но здесь без примеров) .
В целом работа мулти курл основываеться на создании паралельных потоков самой курл системы, т.е. берется обычные курл запросы и посылаются не последовательно а сразу все параллельно и пока они все не завершаться работа мульти так же не завершиться (хотя это можно исправить, но об этом потом), если вы не в курсе что такое курл советую прочитать.
Так в общем первое что здесь нужно это изучить работу самой мулти курл, рассмотрим пример кода:
$mh = curl_multi_init();
for($s=0;$s$ch[$s] = curl_init();
curl_setopt($ch[$s], CURLOPT_URL, $url[$s]);
curl_setopt($ch[$s] , CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch[$s], CURLOPT_HEADER, 1);
curl_setopt($ch[$s], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch[$s], CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch[$s], CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch[$s], CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch[$s], CURLOPT_SSL_VERIFYHOST, false);
curl_multi_add_handle($mh,$ch[$s]);
}
Что мы сдесь видем?
В начале с помощью функции curl_multi_init создаеться стандартный набор мульти дискриптеров, енто эдыкая ссылка на мулти потом в общем не замарачивайтесь пока.
После создания мулти дескриптера создаем стандарнтые дискриптеры курл с пораметрами для них после чего в конце функцией curl_multi_add_handle добовям все в набор.
Что происходит дольше и как нам все это запистить иглавное получить результат?
Далее береться пример из официального мана и куриться до посинения! шучу :)
В общем пример из оф мана действительно желаетьно взять и понять как это работаеться
В целом не буду дальше загружать вас работой других функций, об это не мало написано в ру нете просто скажу как нам использывать другой кусок кода, чтож берем пример из мана :) да я серьезно отличный пример :)
while( ($mrc = curl_multi_exec($mh, $running))==CURLM_CALL_MULTI_PERFORM );
while($running && $mrc == CURLM_OK){
if($running and curl_multi_select($mh)!=-1 ){
do{
$mrc = curl_multi_exec($mh, $running);
if( $info=curl_multi_info_read($mh) and $info['msg'] == CURLMSG_DONE ){
$ch = $info['handle'];
$status=curl_getinfo($ch,CURLINFO_HTTP_CODE);
$data[]=curl_multi_getcontent($info['handle']);
curl_multi_remove_handle($mh, $ch);
curl_close($ch);
}
}while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
usleep(100);
}
Данный пример слегка модифецирован мною, но вам не стоит пока над этим замарачиваться бериде уже готовый, в общем в массиве $data оказываються все результатмы работы мулти, из можно легко вывсети на экран echo $data :)
Да если кто то из вас так и не понил куда пихать линки то сразу скажу что в массив $url
Да да $url это массив :)
О работе прокси чекера и использывания прокси, поговарим в следующем посте, а пока я пошел есть :)