今日、インターネットから 150,000 枚の写真のアドレスを取得し、各行に 1 枚の写真のアドレスを保存するプログラムを作成しました。次に、画像をダウンロードしてローカルマシンに保存したいのですが、ダウンロード速度があまり速くないので、Linux でマルチスレッドを実装するために php を使用します。まず、txt ファイルを同じサイズの 10 個のファイルに分割します。 15,000 の画像アドレスと 10 個のプログラムを同時に開いて画像を保存すると、時間は元の時間のわずか 1/10 になる可能性があります。以下にプログラムを投稿し、より良い方法があれば皆さんにお知らせします。
01
71 関数 for_save_img($num)
02
72
03
73 for($i = 0; $i
04
74 {
05
75 system("/usr/local/bin/phpindex.php クロール save_img {$i} & > /tmp/null");
06
76 }
07
77 }
08
78
09
79 関数 save_img($num)
10
80{
11
81 静的 $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 = トリム($imageurl);
18
88 echo $imageurl;
19
89 $this->benchmark->mark("code_start");
20
90
21
91 $final_imageurl = "http://www.****.com/upload/UploadFile/" .
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 "成功しました...";
27
97 }
28
98 $this->benchmark->mark('code_end');
29
99
30
100 エコー $this->benchmark->elapsed_time('code_start', 'code_end');
31
101 }
32
102 }
33
34
35
このプログラムは、Linux シェル phpindex.php の Web サイトのルート ディレクトリにある ci フレームワークの下で実行されます。
36
良い提案があれば、歓迎し、広い心で受け入れてください
著者: ユエ・グアンクン