ホームページ > バックエンド開発 > PHPチュートリアル > 多线程 - PHP怎么同时执行,或者说多个进程执行?

多线程 - PHP怎么同时执行,或者说多个进程执行?

WBOY
リリース: 2016-06-06 20:31:19
オリジナル
1013 人が閲覧しました

比如一个文件放着1万一个URL,然后有个PHp文件要读取这一万个URL,然后读URL把有邮箱全取出来,
那么问题就来了,一个文件处理这么多的话肯定慢死了,一个一个遍历一个一个读。
我意思是能不能读取到一个URL就开一个PHP进程单独处理,在读到一个在开一个PHP进程,这是我的思路,大神有好的办法吗?

回复内容:

比如一个文件放着1万一个URL,然后有个PHp文件要读取这一万个URL,然后读URL把有邮箱全取出来,
那么问题就来了,一个文件处理这么多的话肯定慢死了,一个一个遍历一个一个读。
我意思是能不能读取到一个URL就开一个PHP进程单独处理,在读到一个在开一个PHP进程,这是我的思路,大神有好的办法吗?

并行发起多个URL请求,可以考虑通过curl_multi和pthreads来实现:
http://php.net/manual/zh/function.curl-multi-init.php
https://github.com/krakjoe/pthreads/blob/master/examples/SimpleWebRequ...

PHP 5.3 以上版本,使用pthreads PHP扩展,可以使PHP真正地支持多线程。多线程在处理重复性的循环任务,能够大大缩短程序执行时间。
参考下这里http://zyan.cc/pthreads/

开1w个进程操作进程在进程切换的时候会有很大的开销,性能不一定能达到预期,甚至操作系统崩溃也是有可能的,我理解你这个程序是不是爬虫之类的脚本,不是线上的服务?如果只是这种线下任务的话,其实有简单的方法,比如你可以用split命令将1w个url分成100个,然后用shell写个循环,开100个进程去执行

用计划任务吧,
php xxx.php 每次处理10-20条,
然后用shell脚本,每秒处理一次
这样子的话,系统压力应该不大。又能够快速处理

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート