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就不要谈多线程了吧,哈哈
我也想知道.........................