zoukankan      html  css  js  c++  java
  • PHP 真正多线程的使用

    以前使用curl的多线程并不是真正的多线程,只是一种模拟的多线程,现在使用pthreads来实现真正意义上的多线程。

    下载:

      windows下:

        http://windows.php.net/downloads/pecl/releases/pthreads/0.0.45/

      mac、unix、linux下:

        https://github.com/krakjoe/pthreads

        或:http://pecl.php.net/package/pthreads(含文档)

    安装方式:

      windows下:

        解压得到pthreadVC2.dll和php_pthreads.dll文件,把vc2文件放到php.exe同级目录,把php_pthreads.dll放到扩展目录下。

        修改php.ini文件 添加extension=php_pthreads.dll

        修改Apache配置文件httpd.conf 添加LoadFile "yourpath/php/pthreadVC2.dll"

      mac、unix、linux下:

        具体可参考宴哥的博客http://zyan.cc/pthreads/

    调用方式:

      具体的用法也可以参考宴哥的博客http://zyan.cc/pthreads/

    <?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')."
    ";
                sleep(1);
            }
            $response = file_get_contents($this->url);
            if ($response) {
                $this->data = array($response);
            }
            echo "线程: 任务完成
    ";
        }
    }
    $request = new Request('hello.html');
    // 运行线程:start()方法会触发run()运行
    if ($request->start()) {
        // 主进程处理一个耗时10秒的任务,此时线程已经工作
        for($i=0;$i<10;$i++) {
            echo '进程: '.date('H:i:s')."
    ";
            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
    */

     

  • 相关阅读:
    OCP-1Z0-051-V9.02-162题
    OCP-1Z0-051-V9.02-161题
    OCP-1Z0-051-V9.02-160题
    Matlab中矩阵的分解
    OCP-1Z0-051-V9.02-158题
    OCP-1Z0-051-V9.02-157题
    Matlab中特殊的矩阵函数
    求Matlab中矩阵的秩和迹
    Matlab中的条件数
    在android里使用boost c++
  • 原文地址:https://www.cnblogs.com/liuwei9002/p/4908887.html
Copyright © 2011-2022 走看看