84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
大家简单聊一下php多线程的应用场合吧,例如php的pthreads,哪些业务操作需要用多线程?
认证高级PHP讲师
http://pecl.php.net/package/pthreads 下载tgz包,里面提供有众多examples示例代码,最简单的就是开启多个线程采集网络资源:
<?php class Request extends Thread { public $url; public $data; public function __construct($url) { $this->url = $url; } public function run() { // 线程处理一个耗时5秒的任务 for($i=0;$i<5;$i++) { echo '线程: '.date('H:i:s')."\n"; sleep(1); } $response = file_get_contents($this->url); if ($response) { $this->data = array($response); } echo "线程: 任务完成\n"; } } $request = new Request('hello.html'); // 运行线程:start()方法会触发run()运行 if ($request->start()) { // 主进程处理一个耗时10秒的任务,此时线程已经工作 for($i=0;$i<10;$i++) { echo '进程: '.date('H:i:s')."\n"; sleep(1); } // 同步线程并输出线程返回的数据 $request->join(); echo '线程返回数据: '.$request->data[0]; } /* 如果顺序执行,合计时间将是15秒,借助线程,则只需10秒. 生成文件: echo 'Hello' > hello.html 运行计时: time php req.php 查看线程: ps -efL|head -n1 && ps -efL|grep php */
值得注意的是,不要在线程里使用echo输出内容,否则会出现不可预知的错误和行为,比如乱码(garbled).尤其是在非CLI环境下,比如Apache/PHP-FPM.
php就不要谈多线程了吧,哈哈
我也想知道.........................
http://pecl.php.net/package/pthreads
下载tgz包,里面提供有众多examples示例代码,最简单的就是开启多个线程采集网络资源:
值得注意的是,不要在线程里使用echo输出内容,否则会出现不可预知的错误和行为,比如乱码(garbled).尤其是在非CLI环境下,比如Apache/PHP-FPM.
php就不要谈多线程了吧,哈哈
我也想知道.........................