linux_PHP チュートリアルでの php でのマルチスレッドの実装

WBOY
リリース: 2016-07-13 17:52:38
オリジナル
1008 人が閲覧しました

今日、インターネットから 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
良い提案があれば、歓迎し、広い心で受け入れてください
著者: ユエ・グアンクン


http://www.bkjia.com/PHPjc/478089.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/478089.html技術記事今日、インターネットから 150,000 枚の写真のアドレスを取得し、各行に 1 つの写真のアドレスを保存するプログラムを作成しました。次に、写真をダウンロードして保存したいと思います...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート