cURL หากเราสั้งเปิด url พร้อมกัน หลายๆเวปมันจะอึดๆ มีทางแก้ไขไหมครับ

เริ่มโดย pooh20240, 14 มิถุนายน 2014, 22:56:28

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

pooh20240

กำลังจะลองเขียน get data ครับ และต้องการให้ curl รองรับการเปิดเวปหลายๆเวปพร้อมกัน มีทางเป็นไปได้ไหมครับหรือต้องใช้ code ตัวอื่นช่วย
จากที่ทดสอบหากเรียก cURL แค่ 1้วปจะไวมากๆๆ  แต่พอลง 3เวปพร้อมกันขึ้นไปจะ ช้าๆ  :P




แหล่งรวมสาว AV 18+ <== BAN USER ถาวร เรียบร้อย

ReleaseCandidate

อันนี้น่าจะช่วยนะครับ
Simultaneuos HTTP requests in PHP with cURL


http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/

######## A function
<?php
 
function multiRequest($data$options = array()) {
 
  
// array of curl handles
  
$curly = array();
  
// data to be returned
  
$result = array();
 
  
// multi handle
  
$mh curl_multi_init();
 
  
// loop through $data and create curl handles
  // then add them to the multi-handle
  
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_RETURNTRANSFER1);
 
    
// post?
    
if (is_array($d)) {
      if (!empty(
$d['post'])) {
        
curl_setopt($curly[$id], CURLOPT_POST,       1);
        
curl_setopt($curly[$id], CURLOPT_POSTFIELDS$d['post']);
      }
    }
 
    
// extra options?
    
if (!empty($options)) {
      
curl_setopt_array($curly[$id], $options);
    }
 
    
curl_multi_add_handle($mh$curly[$id]);
  }
 
  
// execute the handles
  
$running null;
  do {
    
curl_multi_exec($mh$running);
  } while(
$running 0);
 
 
  
// get content and remove handles
  
foreach($curly as $id => $c) {
    
$result[$id] = curl_multi_getcontent($c);
    
curl_multi_remove_handle($mh$c);
  }
 
  
// all done
  
curl_multi_close($mh);
 
  return 
$result;
}
 
?>



######## A GET example
<?php
 
$data 
= array(
  
'http://search.yahooapis.com/XXXXXX/V1/videoSearch?appid=YahooDemo&query=Pearl+Jam&output=json',
  
'http://search.yahooapis.com/XXXXXX/V1/imageSearch?appid=YahooDemo&query=Pearl+Jam&output=json',
  
'http://search.yahooapis.com/XXXXXX/V1/artistSearch?appid=YahooDemo&artist=Pearl+Jam&output=json'
);
$r multiRequest($data);
 
echo 
'<pre>';
print_r($r);
 
?>



ที่ก็อป code มาด้วยเผื่อเว็บต้นทางหาย  :wanwan019:
[direct=https://pumplike.pro/]ปั้มไลค์ ปั้มติดตาม ปั้มไลค์รูป[/direct] [direct=https://pumplike.pro/]เพิ่มไลค์ เพิ่มติดตาม เพิ่มไลค์รูป[/direct] [direct=https://pumplike.pro/]ฟรีปั้มไลค์ เพิ่มไลค์บนมือถือ ปั้มไลค์บนมือถือ[/direct]

pooh20240

อ้างถึงจาก: ReleaseCandidate ใน 15 มิถุนายน 2014, 06:21:53
อันนี้น่าจะช่วยนะครับ
Simultaneuos HTTP requests in PHP with cURL


http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/

######## A function
<?php
 
function multiRequest($data$options = array()) {
 
  
// array of curl handles
  
$curly = array();
  
// data to be returned
  
$result = array();
 
  
// multi handle
  
$mh curl_multi_init();
 
  
// loop through $data and create curl handles
  // then add them to the multi-handle
  
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_RETURNTRANSFER1);
 
    
// post?
    
if (is_array($d)) {
      if (!empty(
$d['post'])) {
        
curl_setopt($curly[$id], CURLOPT_POST,       1);
        
curl_setopt($curly[$id], CURLOPT_POSTFIELDS$d['post']);
      }
    }
 
    
// extra options?
    
if (!empty($options)) {
      
curl_setopt_array($curly[$id], $options);
    }
 
    
curl_multi_add_handle($mh$curly[$id]);
  }
 
  
// execute the handles
  
$running null;
  do {
    
curl_multi_exec($mh$running);
  } while(
$running 0);
 
 
  
// get content and remove handles
  
foreach($curly as $id => $c) {
    
$result[$id] = curl_multi_getcontent($c);
    
curl_multi_remove_handle($mh$c);
  }
 
  
// all done
  
curl_multi_close($mh);
 
  return 
$result;
}
 
?>



######## A GET example
<?php
 
$data 
= array(
  
'http://search.yahooapis.com/XXXXXX/V1/videoSearch?appid=YahooDemo&query=Pearl+Jam&output=json',
  
'http://search.yahooapis.com/XXXXXX/V1/imageSearch?appid=YahooDemo&query=Pearl+Jam&output=json',
  
'http://search.yahooapis.com/XXXXXX/V1/artistSearch?appid=YahooDemo&artist=Pearl+Jam&output=json'
);
$r multiRequest($data);
 
echo 
'<pre>';
print_r($r);
 
?>



ที่ก็อป code มาด้วยเผื่อเว็บต้นทางหาย  :wanwan019:

ขอบคุณครับ เด่วไปลองก่อน ^ ^
แหล่งรวมสาว AV 18+ <== BAN USER ถาวร เรียบร้อย

pooh20240

สอบถามเพิ่มเกี่ยวกับ xml  load แบบไหนไวกว่ากันครับรหว่าง

-----------------------------------------------------------------------------
แบบ 1

   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $request);
   curl_setopt($ch, CURLOPT_HEADER, 0);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   $data = curl_exec($ch);
   curl_close($ch);
   $parxml = new SimpleXMLElement($data);

-----------------------------------------------------------------------------
// แบบ 2

$parxml = simplexml_load_file($request) or die("Sorry, can't open this: ".$request);


-----------------------------------------------------------------------------


หรือมีแบบที่ไวกว่าแนะนำหน่อยนะครับ อยากให้เวปเปิดไวๆ คือมันชอบช้าตอนที่ loop เรือยๆ พร้อมกัน  :P
แหล่งรวมสาว AV 18+ <== BAN USER ถาวร เรียบร้อย

pooh20240

แหล่งรวมสาว AV 18+ <== BAN USER ถาวร เรียบร้อย

gd_ab

ลองใช้ AJAX มาช่วยมั้ยครับ
ดึงข้อมูลจากกี่เว็บล่ะครับ

การใช้ cUrl เป็นการใช้ server ดึงข้อมูลมา
แต่การใช้ AJAX จะเป็นการสั่งให้ client browser ไปดึงข้อมูลมา ถ้าดึงข้อมูลหลายเว็บมากเกินไป ก็ช้าได้เหมือนกันครับ
[direct=http://elvira.co.th/product/เตารีดไอน้ำ-รุ่น-540/]เตารีด เตารีดไอน้ำ[/direct]<br />[direct=http://elvira.co.th/product-category/จักรเย็บผ้าและอุปกรณ์-elvira/จักรเย็บผ้า/]จักรเย็บผ้า[/direct]<br />[direct=http://elvira.co.th]ELVIRA จักรเย็บผ้า เตารีดไอน้ำ เครื่องทำความสะอาดด้วยไอน้ำ เครื่องปั่นความเร็วสูง[/direct]<br />[direct=http://theeravat.com]Blog ส่วนตัวครับ[/direct]

pooh20240

อ้างถึงจาก: gd_ab ใน 15 มิถุนายน 2014, 21:31:48
ลองใช้ AJAX มาช่วยมั้ยครับ
ดึงข้อมูลจากกี่เว็บล่ะครับ

การใช้ cUrl เป็นการใช้ server ดึงข้อมูลมา
แต่การใช้ AJAX จะเป็นการสั่งให้ client browser ไปดึงข้อมูลมา ถ้าดึงข้อมูลหลายเว็บมากเกินไป ก็ช้าได้เหมือนกันครับ

ดึงครั้งละ 1เวปครับ แต่เป็น loop
แหล่งรวมสาว AV 18+ <== BAN USER ถาวร เรียบร้อย

gd_ab

งั้นก็ไม่น่าจะมีปัญหานะครับ
ใช้ xmlHttp ใน javascript
หรือจะใช้ jQuery ไปเลยก็ได้ครับ
[direct=http://elvira.co.th/product/เตารีดไอน้ำ-รุ่น-540/]เตารีด เตารีดไอน้ำ[/direct]<br />[direct=http://elvira.co.th/product-category/จักรเย็บผ้าและอุปกรณ์-elvira/จักรเย็บผ้า/]จักรเย็บผ้า[/direct]<br />[direct=http://elvira.co.th]ELVIRA จักรเย็บผ้า เตารีดไอน้ำ เครื่องทำความสะอาดด้วยไอน้ำ เครื่องปั่นความเร็วสูง[/direct]<br />[direct=http://theeravat.com]Blog ส่วนตัวครับ[/direct]

Legendary Pon

อ้างถึงจาก: gd_ab ใน 15 มิถุนายน 2014, 23:47:08
งั้นก็ไม่น่าจะมีปัญหานะครับ
ใช้ xmlHttp ใน javascript
หรือจะใช้ jQuery ไปเลยก็ได้ครับ

มีตัวอย่างมั้ยครับ
[direct=http://www.hostnog.com]เบื่อ Hostgator อยากใช้โฮสอื่นบ้าง ดู 10 โฮส คุณภาพดี เทียบเท่า Hostgator ราคาถูกกว่า ผมลองใช้เองมาแล้วทุกโฮส[/direct]
[direct=http://www.allofwedding.net]ผ้าแพร ผ้ารับไหว้ แต่งงาน[/direct] [direct=http://www.xn--t3cep2dyd1b.net]ผ้าแพร[/direct] [direct=http://www.xn--r3cdvrt8af1mqbh.com]ผ้ารับไหว้[/direct] [direct=http://www.bloggang.com/mainblog.php?id=legendary-pon]Legendary blog[/direct]

pooh20240

อ้างถึงจาก: gd_ab ใน 15 มิถุนายน 2014, 23:47:08
งั้นก็ไม่น่าจะมีปัญหานะครับ
ใช้ xmlHttp ใน javascript
หรือจะใช้ jQuery ไปเลยก็ได้ครับ

ขอบคุณ ที่แนะนำครับ เด่วไปหาลองก่อน ว่าแต่มันใช้คู่กับ php xml ได้หรอครับ  :P
แหล่งรวมสาว AV 18+ <== BAN USER ถาวร เรียบร้อย

thaimarketpress

ใน 1 request ที่ สคริป ของท่านผมว่าอย่ายิง curl หรือ เรียก api ใดๆเกิน 1 request จะดีที่สุดนะครับแต่ถ้าจำเป็นต้องใช้หลายๆ url ผมแนะนำให้ทำหน้า cron ตั้งเวลาไปกวาดมาลง database เก็บไว้เป็นแคชน่าจะเหมาะสมกว่าครับ 
ตอบแบบงูๆปลาๆคนความรู้น้อยนะครับเผื่อจะช่วยได้
หาซื้อเว็บไซต์มีรายได้แนวเว็บบอร์ด/ชมรม/คลับ ที่ไม่ผิดกฏหมาย งบ 100k ลองเสนอมานะครับ

zapanlek

หากไม่ใช่เวป ที่ต้องการ ข้อมูล Real Time เก็บใส่ฐานข้อมูลดีกว่าครับ ตั้ง cron ดูดเอาครับ ตั้งสัก 1 ชั่วโมงครั้งก็ได้ครับ
จะได้ตัดข้อมูลไม่สำคัญออกไปได้ด้วยกันการโหลดช้า พวกรูปพวกต่างๆ Flash ต่างๆ ตัดออกให้หมด ครับ ดีกว่าเยอะ

ของผมดูดกว่า 10 เวป เอาแต่ที่สำคัญๆมาโชว์ ดีกว่าเยอะครับ  :-[
ผมชอบเวปนี้
www.aixfs.com

gd_ab

อ้างถึงจาก: pooh20240 ใน 16 มิถุนายน 2014, 11:32:12
อ้างถึงจาก: gd_ab ใน 15 มิถุนายน 2014, 23:47:08
งั้นก็ไม่น่าจะมีปัญหานะครับ
ใช้ xmlHttp ใน javascript
หรือจะใช้ jQuery ไปเลยก็ได้ครับ

ขอบคุณ ที่แนะนำครับ เด่วไปหาลองก่อน ว่าแต่มันใช้คู่กับ php xml ได้หรอครับ  :P

ขอโทษที่มาตอบช้าครับ ใช้กับ XML ได้ครับ เพราะค่าที่ AJAX รับมาจะเป็น Text ทั้งหมดเลย มาเป็น html ก็มาเป็นแท็กเลย
ถ้ามาเป็น XML ใช้ได้ครับ

ถ้าจำไม่ผิด Javascript ก็สามารถแปลง XML เอามาใช้งานได้ง่ายด้วยนะครับ ที่เคยใช้ผมจะใช้เป็น JSON น่ะครับ
[direct=http://elvira.co.th/product/เตารีดไอน้ำ-รุ่น-540/]เตารีด เตารีดไอน้ำ[/direct]<br />[direct=http://elvira.co.th/product-category/จักรเย็บผ้าและอุปกรณ์-elvira/จักรเย็บผ้า/]จักรเย็บผ้า[/direct]<br />[direct=http://elvira.co.th]ELVIRA จักรเย็บผ้า เตารีดไอน้ำ เครื่องทำความสะอาดด้วยไอน้ำ เครื่องปั่นความเร็วสูง[/direct]<br />[direct=http://theeravat.com]Blog ส่วนตัวครับ[/direct]

pooh20240

อ้างถึงจาก: gd_ab ใน 18 มิถุนายน 2014, 19:32:34
อ้างถึงจาก: pooh20240 ใน 16 มิถุนายน 2014, 11:32:12
อ้างถึงจาก: gd_ab ใน 15 มิถุนายน 2014, 23:47:08
งั้นก็ไม่น่าจะมีปัญหานะครับ
ใช้ xmlHttp ใน javascript
หรือจะใช้ jQuery ไปเลยก็ได้ครับ

ขอบคุณ ที่แนะนำครับ เด่วไปหาลองก่อน ว่าแต่มันใช้คู่กับ php xml ได้หรอครับ  :P

ขอโทษที่มาตอบช้าครับ ใช้กับ XML ได้ครับ เพราะค่าที่ AJAX รับมาจะเป็น Text ทั้งหมดเลย มาเป็น html ก็มาเป็นแท็กเลย
ถ้ามาเป็น XML ใช้ได้ครับ

ถ้าจำไม่ผิด Javascript ก็สามารถแปลง XML เอามาใช้งานได้ง่ายด้วยนะครับ ที่เคยใช้ผมจะใช้เป็น JSON น่ะครับ

ขอบคุณมากครับ เด๋วจะลองทดสอบกับ r24 ดูครับ :wanwan017:
แหล่งรวมสาว AV 18+ <== BAN USER ถาวร เรียบร้อย