php如何多线程

php如何多线程

php开启多线程的方法

php如何安装pthreads的拓展的,我采用的是windows安装,我本机的开发环境是phpstudy。

有几点特别需要注意,在window中此类拓展一定是要在线程安全(ts)的php版本中运行。

安装

多线程.png

立即学习“PHP免费学习笔记(深入)”;

1、复制php_pthreads.dll 到目录 binphpext 

2、复制pthreadVC2.dll 到目录 C:windowssystem32 下面。

3、打开php配置文件php.ini,在后面加上extension=php_pthreads.dll。

提示!

Windows系统需要将 pthreadVC2.dll 所在路径加入到 PATH 环境变量中。我的电脑—>鼠标右键—>属性—>高级—>环境变量—>系统变量—>找到名称为Path的—>编辑—>在变量值最后面加上pthreadVC2.dll的完整路径。

测试

测试脚本我复制的是http://zyan.cc/pthreads/这里的实例代码。

多线程-1.png

这里我贴上我的代码,就是在子线程中我添加了日志记录,判断下他的返回值如何

url = $url;        }          public function run()        {            if(($url = $this->url))            {                $this->data = model_http_curl_get($url);            }        }    }      function model_thread_result_get($urls_array)     {        foreach ($urls_array as $key => $value)         {            $thread_array[$key] = new test_thread_run($value["url"]);            $thread_array[$key]->start();        }          foreach ($thread_array as $thread_array_key => $thread_array_value)         {            while($thread_array[$thread_array_key]->isRunning())            {                usleep(10);            }            if($thread_array[$thread_array_key]->join())            {                $variable_data[$thread_array_key] = $thread_array[$thread_array_key]->data;            }        }        return $variable_data;    }      function model_http_curl_get($url,$userAgent="")     {        $userAgent = $userAgent ? $userAgent : 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)';         $curl = curl_init();        curl_setopt($curl, CURLOPT_URL, $url);        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);        curl_setopt($curl, CURLOPT_TIMEOUT, 5);        curl_setopt($curl, CURLOPT_USERAGENT, $userAgent);        $result = curl_exec($curl);        if($result=== false){          $result = curl_error($curl);      }      curl_close($curl);      $pid = Thread::getCurrentThreadId();      $file='D:\pid\'.$pid.'p.txt';            file_put_contents($file,$result);      return $result;    }      for ($i=0; $i  "baidu", "url" => "http://www.baidu.com/s?wd=".mt_rand(10000,20000));    }      $t = microtime(true);    $result = model_thread_result_get($urls_array);    $e = microtime(true);    echo "多线程:".($e-$t)."";    //print_r($result);  $t = microtime(true);    foreach ($urls_array as $key => $value)     {        $result_new[$key] = model_http_curl_get($value["url"]);    }    $e = microtime(true);    echo "For循环:".($e-$t)."";   //print_r($result_new);?>

登录后复制

结果在我的目录下:

多线程-2.png

里面的文本内容是:

多线程-3.png

也就是说子线程是正常调度了,但是没有拿到数据。此类情况可能是我的网速的原因,垃圾8M电信。

推荐教程:PHP视频教程

以上就是php如何多线程的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2524078.html

(0)
上一篇 2025年3月5日 17:49:49
下一篇 2025年2月20日 03:04:40

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php判断星期几

    php判断今天是星期几 php的date()函数十分强大,合理利用该函数的各种参数可以实现我们日常开发中的各种需求,今天说说如何使用php判断今天是星期几的方法。 PHP date()参数说明 这里主要用到了 w 这个参数,关于这个参数的解…

    2025年3月5日
    200
  • php判断文件是否可写

    php判断文件或目录是否可写 在PHP中,可用is_writable()函数来判断一个 文件/目录 是否可写,详情如下: 参考 is_writable — 判断给定的文件名是否可写。 说明 立即学习“PHP免费学习笔记(深入)”; bool…

    2025年3月5日
    200
  • php判断文件夹是否存在

    php判断文件或目录是否存在 1、file_exists()函数 判断文件文件是否存在 实例: //$file = “check.txt”;if(file_exists($file)){    echo “当前目录中,文件”.$file.”…

    2025年3月5日
    200
  • php判断两个字符串是否相同

    php判断两个字符串是否相同 strncmp()函数定义如下: strncmp(string1,string2,length) 参数说明: string1 必需。规定要比较的首个字符串。 立即学习“PHP免费学习笔记(深入)”; strin…

    2025年3月5日
    200
  • php连接mysql数据库中文乱码

    要解决php数据库乱码问题可以做以下设置: 一、数据库里的设置: 1、在MYSQL中新建数据库的时候,数据库选择UTF-8编码既字符集设定为utf-8_unicode_ci(Unicode (多语言),不区分大小写),库里面 表table的…

    2025年3月5日
    200
  • php框架区别

    php常见框架区别 一、CI框架 CI框架是一个简单快速的PHP MVC轻量级框架,它执行效率高,快速简洁,代码量少,适合中小型项目开发,也可以做大型项目,但扩展能力不是很好。 优势:框架比较简单,适合入门开发,易学,上手快,静态化很容易,…

    2025年3月5日
    200
  • php教程书籍有哪些

    如果你学过其他的语言,你会发现php其实还算简单的。有人说php学习适合看手册,但是依然有很多的经典书可以帮助大家入门和提高。以下4本你就可以好好读读。 1、细说PHP PHP入门的经典,内容详实易懂,全面涵盖了web开发的所需的知识内容。…

    2025年3月5日 编程技术
    200
  • php接口有哪几种

    一、接口按请求人可以分为两种: 1、是被其他内部项目调用的接口(包括js异步请求的接口和定时程序)。 2、是对外的接口,主要提供给外部开发者调用的。 两种接口最大区别就是,内部接口不需要太严格的身份验证,而对外接口需要严格的身份验证,加密解…

    2025年3月5日
    200
  • php解决乱码

    第一种:解决html中中文乱码问题方法 如果你的HTML文件文件出现了乱码问题,那么你可以在head标签里面加入UTF8编码(国际化编码):UTF-8是没有国家的编码,也就是独立于任何一种语言,任何语言都可以使用的。    登录后复制 第二…

    2025年3月5日
    200
  • php开发要用苹果笔记本吗

    php开发要用苹果笔记本吗? php开发可以用苹果笔记本,因为苹果笔记本的操作系统是MacOS,而MacOS是基于Unix的,Unix下又有着很多好用的工具,对PHP开发人员非常友好。 国外程序员爱用苹果Mac电脑的10大理由: 1、Mac…

    2025年3月5日
    200

发表回复

登录后才能评论