cURL ile Birden Fazla Siteye Bağlanma

Bu yazımızda cURL kullanarak birden fazla siteden veri çekmeye değineceğiz. Öncelikle bağlantı kurulacak siteleri belirleyelim.

$urls = array (
     '<a style="color: blue !important;" href="http://www.google.com/">http://www.google.com</a>' ,
     '<a style="color: blue !important;" href="http://www.bing.com/">http://www.bing.com</a>' ,
     '<a style="color: blue !important;" href="http://www.yahoo.com/">http://www.yahoo.com</a>' ,
     '<a style="color: blue !important;" href="http://www.twitter.com/">http://www.twitter.com</a>' ,
     '<a style="color: blue !important;" href="http://www.facebook.com/">http://www.facebook.com</a>'
);
Yukarıdaki beş siteden verimizi çekeceğiz.
$mh = curl_multi_init();
Birden falza site ile bağlantı kurmak için curl_multi_init() fonksiyonunu kullanıyoruz.
$channels = array ();
foreach ( $urls as $key =&gt; $url ) {
     $channels [ $key ] = curl_init();
     curl_setopt_array( $channels [ $key ], array (
         CURLOPT_URL =&gt; $url ,
         CURLOPT_RETURNTRANSFER =&gt; true,
         CURLOPT_FOLLOWLOCATION =&gt; true
     ));
     curl_multi_add_handle( $mh , $channels [ $key ]);
}
Genelde tek site ile bağlantı kurarken kullandığımız fonksiyonların başına multi ekliyoruz.
$active = null;
do {
     $status = curl_multi_exec( $mh , $active );
}
while ( $active &amp;&amp; $status == CURLM_OK);
foreach ( $channels as $chan ) {
     echo curl_multi_getcontent( $chan );
     curl_multi_remove_handle( $mh , $chan );
     curl_close( $chan );
}
  curl_multi_close( $mh );

Kodlarımız yukarıdaki şekilde olacaktır. Görüldüğü gibi curl_init fonksiyonu curl_multi_init, curl_close fonksiyonu curl_multi_close olarak değişmiş. Kodlarımızın son halini aşağıda görebilirsiniz.

$urls = array (
     '<a style="color: blue !important;" href="http://www.google.com/">http://www.google.com</a>' ,
     '<a style="color: blue !important;" href="http://www.bing.com/">http://www.bing.com</a>' ,
     '<a style="color: blue !important;" href="http://www.yahoo.com/">http://www.yahoo.com</a>' ,
     '<a style="color: blue !important;" href="http://www.twitter.com/">http://www.twitter.com</a>' ,
     '<a style="color: blue !important;" href="http://www.facebook.com/">http://www.facebook.com</a>'
);
$mh = curl_multi_init();
$channels = array ();
foreach ( $urls as $key =&gt; $url ) {
     $channels [ $key ] = curl_init();
     curl_setopt_array( $channels [ $key ], array (
         CURLOPT_URL =&gt; $url ,
         CURLOPT_RETURNTRANSFER =&gt; true,
         CURLOPT_FOLLOWLOCATION =&gt; true
     ));
     curl_multi_add_handle( $mh , $channels [ $key ]);
}
$active = null;
do {
     $status = curl_multi_exec( $mh , $active );
}
while ( $active &amp;&amp; $status == CURLM_OK);
foreach ( $channels as $chan ) {
     echo curl_multi_getcontent( $chan );
     curl_multi_remove_handle( $mh , $chan );
     curl_close( $chan );
}
curl_multi_close( $mh );

Bir önceki yazımız olan En Çok Kullanılan PHP Editörler başlıklı makalemizde Aptana, Dreamweaver ve En Güzel PHP Editör hakkında bilgiler verilmektedir.

About This Author

Post A Reply

%d blogcu bunu beğendi: