程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> linux下php實現多線程

linux下php實現多線程

編輯:關於PHP編程

今天遇到個問題,寫了個程序從網上抓了150000個圖片的地址,存到了txt文檔中,每行存了一個圖片的地址。現在想將圖片下載下來,保存到本機,但是下載的速度不是很快,所以用到了php在linux下面實現多線程,首先將txt文件拆成了10個大小相等的文件,每個文件存儲了15000條圖片的地址,同時開啟10個進行運行保存圖片的程序,這樣的時間可能就只是原來的1/10。下面將程序貼出來 ,大家指導一下有沒有更好的方法。

 
 
01
71     function for_save_img($num)
02
 72     {
03
 73         for($i = 0; $i <= $num; $i++)
04
 74         {
05
 75             system("/usr/local/bin/php index.php crawl save_img {$i} & > /tmp/null");
06
 76         }
07
 77     }
08
 78
09
 79     function save_img($num)
10
 80     {
11
 81         static $i = 0;
12
 82         //把文件讀成一個數組
13
 83         $img_urllists = ROOTDIRPATH . "/static/image_{$num}.txt";
14
 84         $arr_img_url = file($img_urllists);
15
 85         foreach($arr_img_url as $imageurl)
16
 86         {
17
 87             $imageurl = trim($imageurl);
18
 88             echo $imageurl;
19
 89             $this->benchmark->mark("code_start");
20
 90             //存圖片
21
 91             $final_imageurl = "http://www.****.com/upload/UploadFile/" . $imageurl;
22
 92             $img_open = file_get_contents($final_imageurl);
23
 93             $ret = file_put_contents(ROOTDIRPATH . '/static/uploadimg/' . $imageurl, $img_open);
24
 94             if($ret)
25
 95             {
26
 96                 echo "Success......";
27
 97             }
28
 98             $this->benchmark->mark('code_end');
29
 99
30
100             echo $this->benchmark->elapsed_time('code_start', 'code_end');
31
101         }
32
102     }
33
 
34
 
35
該程序為ci框架下  在linux的shell下 網站的根目錄運行   php index.php crawl for_save_img
36
大家有好的建議歡迎提出 虛心接受
作者:岳冠群

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved