lostyazilim

PHP CURL multithreading

3 Mesajlar 1.175 Okunma
lstbozum
wmaraci reklam

JumperTech JumperTech Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 02.07.2016
  • Yaş/Cinsiyet 39 / E
  • Meslek Webmaster
  • Konum İstanbul Avrupa
  • Ad Soyad B** O**
  • Mesajlar 1705
  • Beğeniler 820 / 523
  • Ticaret 19, (%100)
Merhaba arkadaşlar,

PHP Curl ile bir yazılım yazıyorum Curl nasıl arka planda çoklu çalıştırılır örneğin ben

for(şart)
{
curl işlemi
}


dediğimde sırayla curl isteği yapılıyor fakat bunun arka planda yüzlerce çalışmasını nasıl yapabilirim yardımcı olursanız memnuniyet duyarım.
 

 

wmaraci
reklam

cihaneken cihaneken Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 25.07.2014
  • Yaş/Cinsiyet 30 / E
  • Meslek Elektrik Teknisyeni
  • Konum Fransa
  • Ad Soyad C** E**
  • Mesajlar 3510
  • Beğeniler 488 / 1190
  • Ticaret 1, (%100)
İstediğin şey galiba bu.


// iki cURL özkaynağı oluşturalım
$ct1 = curl_init();
$ct2 = curl_init();

// URL'yi ve ilgili seçenekleri belirtelim
curl_setopt($ct1, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ct1, CURLOPT_HEADER, 0);
curl_setopt($ct2, CURLOPT_URL, "http://www.php.net/");
curl_setopt($ct2, CURLOPT_HEADER, 0);

// çoklu cURL tanıtıcısını oluşturalım
$cct = curl_multi_init();

// iki tanıtıcıyı buna ekleyelim
curl_multi_add_handle($cct,$ct1);
curl_multi_add_handle($cct,$ct2);

$running=null;
// tanıtıcıları çalıştıralım
do {
curl_multi_exec($cct,$running);
} while ($running > 0);

// tanıtıcıları kapatalım
curl_multi_remove_handle($cct, $ct1);
curl_multi_remove_handle($cct, $ct2);
curl_multi_close($cct);

?>


http://php.net/manual/tr/function.curl-multi-init.php
 

 

JumperTech JumperTech Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 02.07.2016
  • Yaş/Cinsiyet 39 / E
  • Meslek Webmaster
  • Konum İstanbul Avrupa
  • Ad Soyad B** O**
  • Mesajlar 1705
  • Beğeniler 820 / 523
  • Ticaret 19, (%100)
cihaneken ben bunların hepsini inceledim fakat responseyi yani çıktıyı hep eksik veriyorlar arada 1 curl bile eksik yarım kalsa sistem down oluyor bu fonksiyon değil de php multithread gerekiyor.

Tekrar buna bakınacağım yorumun için sağol. Terzi kendi söküğünü dikemezmiş. :)

Sanırsam durumu çözdüm, lazım olabilecek kişiler bu kaynakla yapabilir.

Kaynak:http://arguments.callee.info/2010/02/21/multiple-curl-requests-with-php/

Ek Olarak: function tweets() {

// check cache
$cache = 'twitter-search.txt';
if (file_exists($cache)) {
clearstatcache();
$minutes = 1; // how long to wait before refreshing the cache
if (filemtime($cache) > (time() - (60 * $minutes)) {
return file_get_contents($cache);
}
}

// we are going to search for tweets mentioning these keywords
$keywords = array(
'javascript',
'html5',
'css3'
);

// build the requests
$ch = array();
$mh = curl_multi_init();
for ($i = 0; $i < count($keywords); $i++) {
$keyword = $keywords[$i];
$ch[$i] = curl_init();
curl_setopt($ch[$i], CURLOPT_URL,
'http://search.twitter.com/search.json?rpp=3&q=' . $keyword);
curl_setopt($ch[$i], CURLOPT_USERAGENT,
'Twitter requires you to set a user agent, any value works here.');
curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch[$i], CURLOPT_HEADER, false);
curl_multi_add_handle($mh, $ch[$i]);
}

// execute the requests simultaneously
$running = 0;
do {
curl_multi_exec($mh, $running);
} while ($running > 0);

// display the results
$output = '';
for ($i = 0; $i < count($keywords); $i++) {
// $results contains this keyword's tweets as an associative array
$results = reset(json_decode(curl_multi_getcontent($ch[$i]), true));
$resultCount = count($results);

// link to our keyword
$output .= '

$output .= '
' . $tweet . ' — ' . $user . '';
}
$output .= '
';
}
file_put_contents($cache, $output); // store in local cache for performance boost
return $output;
}
echo tweets();
 

 

wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al