国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP多線程pthreads使用例子

2024-05-04 21:49:53
字體:
供稿:網(wǎng)友

php本身對于多線程處理是不夠理想的,但如果我們使用pthreads性能會有所提高了,下面來看一個PHP多線程pthreads使用例子.

  1. <?php 
  2. declare(ticks = 1); 
  3. $running = 1; 
  4.  
  5. //信號處理函數(shù) 
  6. function sig_handler($signo
  7.   switch ($signo) { 
  8.   case SIGINT: 
  9.     finish(); 
  10.     break
  11.   default
  12.     break
  13.   } 
  14.  
  15. pcntl_signal(SIGINT, "sig_handler"); 
  16. class test extends /Thread { 
  17.   public $url
  18.   public $result
  19.  
  20.   public function __construct($url) { 
  21.     $this->url = $url
  22.   } 
  23.  
  24.   public function run() { 
  25.     if ($this->url) { 
  26.       $this->result = model_http_curl_get($this->url); 
  27.     } 
  28.   } 
  29. function model_http_curl_get($url) { 
  30.   $curl = curl_init();   
  31.   curl_setopt($curl, CURLOPT_URL, $url);   
  32.   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);   
  33.   curl_setopt($curl, CURLOPT_TIMEOUT, 5);   
  34.   curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)');   
  35.   $result = curl_exec($curl);   
  36.   curl_close($curl);   
  37.   return $result;   
  38. for ($i = 0; $i < 500; $i++) { 
  39.   $urls[] = 'http://www.baidu.com/s?wd='. rand(10000, 20000); 
  40.  
  41. $pool = array(); 
  42. for ($i=1;$i<=5;$i++) { 
  43.   $key = uniqid(); 
  44.   $url = array_shift($urls); 
  45.   $pool[$key] = new test($url); 
  46.   $pool[$key]->start(); 
  47.   echo "啟動線程$key/n"
  48. while ($urls && $running) { 
  49.   foreach ($pool as $key=>$worker) { 
  50.     if(! $worker->isRunning()){ 
  51.       //unset($pool[$key]); 
  52.       echo "線程".$key."已結(jié)束/n"
  53.       $url = array_shift($urls); 
  54.       $pool[$key] = new test($url); 
  55.       $pool[$key]->start(); 
  56.       echo "啟動線程$key/n"
  57.     } 
  58.   } 
  59.   usleep(1000); 
  60. }//Vevb.com 
  61.  
  62. function finish() { 
  63.   global $running
  64.   global $pool
  65.   $running = 0; 
  66.   echo "接收到信號,等待運(yùn)行中線程結(jié)束/n"
  67.   foreach ($pool as $key=>$worker) { 
  68.     if ($pool[$key]->join()) { 
  69.       var_dump($pool[$key]->result); 
  70.     } 
  71.   } 
  72. ?>

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 汉寿县| 龙南县| 芷江| 天峨县| 永福县| 恩施市| 周口市| 阳朔县| 深水埗区| 兖州市| 观塘区| 浦东新区| 恩平市| 临沧市| 万年县| 无为县| 同德县| 清镇市| 砀山县| 莫力| 靖西县| 玛曲县| 贵溪市| 武威市| 治县。| 布尔津县| 偃师市| 嘉祥县| 益阳市| 方城县| 绿春县| 石景山区| 太和县| 霸州市| 砀山县| 乌鲁木齐市| 堆龙德庆县| 长垣县| 荣成市| 垦利县| 越西县|