1. 程式人生 > >windows下安裝php真正的多執行緒擴充套件pthreads教程

windows下安裝php真正的多執行緒擴充套件pthreads教程

擴充套件地址:http://docs.php.net/manual/zh/book.pthreads.php

注意事項
php5.3或以上,且為執行緒安全版本。apache和php使用的編譯器必須一致。
通過phpinfo()檢視Thread Safety為enabled則為執行緒安全版。
通過phpinfo()檢視Compiler項可以知道使用的編譯器。本人的為:MSVC9 (Visual C++ 2008)。


本人使用環境
32位windows xp sp3,wampserver2.2d(php5.3.10-vc9 + apache2.2.21-vc9)。


一、下載pthreads擴充套件
下載地址:http://windows.php.net/downloads/pecl/releases/pthreads

根據本人環境,我下載的是pthreads-2.0.8-5.3-ts-vc9-x86。
2.0.8代表pthreads的版本。
5.3代表php的版本。
ts表示php要執行緒安全版本的。
vc9表示php要Visual C++ 2008編譯器編譯的。
x86則表示32位的


二、安裝pthreads擴充套件
複製php_pthreads.dll 到目錄 bin\php\ext\ 下面。(本人路徑D:\wamp\bin\php\php5.3.10\ext)
複製pthreadVC2.dll 到目錄 bin\php\ 下面。(本人路徑D:\wamp\bin\php\php5.3.10)
複製pthreadVC2.dll 到目錄 C:\windows\system32 下面。
開啟php配置檔案php.ini。在後面加上extension=php_pthreads.dll
提示!Windows系統需要將 pthreadVC2.dll 所在路徑加入到 PATH 環境變數中。我的電腦--->滑鼠右鍵--->屬性--->高階--->環境變數--->系統變數--->找到名稱為Path的--->編輯--->在變數值最後面加上pthreadVC2.dll的完整路徑(本人的為C:\WINDOWS\system32\pthreadVC2.dll)。


三、測試pthreads擴充套件
  1. classAsyncOperationextends \Thread {
  2. publicfunction __construct($arg){
  3.         $this->arg = $arg;
  4. }
  5. publicfunction run(){
  6. if($this->arg){
  7.             printf("Hello %s\n", $this->arg);
  8. }
  9. }
  10. }
  11. $thread =newAsyncOperation("World");
  12. if($thread->start())
  13.     $thread->join();
  14. ?>
複製程式碼 執行以上程式碼出現 Hello World,說明pthreads擴充套件安裝成功!


附上一個Thinkphp3.2.2簡單例子
  1. <?php
  2. namespaceHome\Controller;
  3. class test extends \Thread {
  4. public $url;
  5. public $result;
  6. publicfunction __construct($url){
  7.         $this->url = $url;
  8. }
  9. publicfunction run(){
  10. if($this->url){
  11.             $this->result = model_http_curl_get($this->url);
  12. }
  13. }
  14. }
  15. function model_http_curl_get($url){
  16.     $curl = curl_init();
  17.     curl_setopt($curl, CURLOPT_URL, $url);
  18.     curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
  19.     curl_setopt($curl, CURLOPT_TIMEOUT,5);
  20.     curl_setopt($curl, CURLOPT_USERAGENT,'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)');
  21.     $result = curl_exec($curl);
  22.     curl_close($curl);
  23. return $result;
  24. }
  25. for($i =0; $i <10; $i++){
  26.     $urls[]='http://www.baidu.com/s?wd='. rand(10000,20000);
  27. }
  28. /* 多執行緒速度測試 */
  29. $t = microtime(true);
  30. foreach($urls as $key=>$url){
  31.     $workers[$key]=new test($url);
  32.     $workers[$key]->start();
  33. }
  34. foreach($workers as $key=>$worker){
  35. while($workers[$key]->isRunning()){
  36.         usleep(100);
  37. }
  38. if($workers[$key]->join()){
  39. dump($workers[$key]->result);
  40. }
  41. }
  42. $e = microtime(true);
  43. echo "多執行緒耗時:".($e-$t)."秒<br>";
  44. /* 單執行緒速度測試 */
  45. $t = microtime(true);
  46. foreach($urls as $key=>$url){
  47. dump(model_http_curl_get($url));
  48. }
  49. $e = microtime(true);
  50. echo "For迴圈耗時:".($e-$t)."秒<br>";
複製程式碼 測試結果如下:
多執行緒耗時:2.8371710777282714844秒
For迴圈耗時:10.941586017608642578秒

原文來自:http://www.thinkphp.cn/topic/22676.html

相關推薦

windows安裝php真正執行擴充套件pthreads教程

擴充套件地址:http://docs.php.net/manual/zh/book.pthreads.php注意事項 php5.3或以上,且為執行緒安全版本。apache和php使用的編譯器必須一致。 通過phpinfo()檢視Thread Safety為enabled則為執行緒安全版。 通過phpinfo(

WindowsPHP執行擴充套件pthreads安裝

檢視phpinfo() 複製檔案 複製php_pthreads.dll到D:\wamp\bin\php\php5.5.12\ext\目錄下 複製pthreadVC2.dll到D:\wamp

PHP 真正執行的使用

原文地址:https://www.cnblogs.com/kluan/p/5934228.html PHP 5.3 以上版本,使用pthreads PHP擴充套件,可以使PHP真正地支援多執行緒。多執行緒在處理重複性的迴圈任務,能夠大大縮短程式執行時間。 我之前的文章中說過,大多數網

PHP安裝threads執行擴充套件基礎教程

一、下載pthreads擴充套件 二、判斷PHP是ts還是nts版 通過phpinfo(); 檢視其中的 Thread Safety 項,這個專案就是檢視是否是執行緒安全,如果是:enabled,一般來說應該是ts版,否則是nts版。 三、根據P

windowssocket程式設計,執行

sercer端 #include <stdio.h> #include <process.h> #include <Winsock2.h> #pragma comment(lib,"ws2_32.lib") void send(void

PHP安裝pthreads執行擴充套件教程[windows篇]

一、判斷PHP是ts還是nts版 通過phpinfo(); 檢視其中的 Thread Safety 項,這個專案就是檢視是否是執行緒安全,如果是:enabled,一般來說應該是ts版,否則是nts版

PHP安裝pthreads執行擴充套件[windows篇]

一、判斷PHP是ts還是nts版 通過phpinfo(); 檢視其中的 Thread Safety 項,這個專案就是檢視是否是執行緒安全,如果是:enabled,一般來說應該是ts版,否則是nts

c++ 網路程式設計(九)TCP/IP LINUX/windows 執行超詳細教程 以及 執行實現服務端

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <process.h> #include <winsock2.h> #include <win

c++ 網路程式設計(九)TCP/IP LINUX/windows 執行超詳細教程 以及 執行實現服務端

原文作者:aircraft 原文連結:https://www.cnblogs.com/DOMLX/p/9661012.html  先講Linux下(windows下在後面可以直接跳到後面看): 一.執行緒基本概念 前面我們講過多程序伺服器,但我們知道它開銷很大

Windows安裝PHP開發環境

說明 zip 系統 () html fin php zip 官網 安裝配置 一、Apache 因為Apache官網只提供源代碼,如果要使用必須得自己編譯,這裏我選擇第三方安裝包Apache Lounge。 進入Apachelounge官方下載地址:http://www.a

Python真正執行之殤——GIT全域性解釋鎖

- 多執行緒的理解: 多程序和多執行緒都可以執行多個任務,執行緒是程序的一部分。執行緒的特點是執行緒之間可以共享記憶體和變數,資源消耗少(不過在Unix環境中,多程序和多執行緒資源排程消耗差距不明顯,Unix排程較快),缺點是執行緒之間的同步和加鎖比較麻煩。 Python多執行緒的缺陷:

PHP學習筆記-Windows安裝PHP環境

1. 下載並解壓PHP安裝包 https://windows.php.net/download#php-7.2 2. 修改php.ini-development為php.ini 3. 開啟php.ini檔案,修改相關配置 1)刪除extension_dir前面的分號,並將

Windows 安裝php redis擴充套件

1.輸出phpinfo,檢視下三處資訊,我的是x86,vc14,nts 2.去這個地址選擇下載https://windows.php.net/downloads/pecl/releases/redis/ 3.下載之後將php_redis.dll、php_redis.pdb檔案放到php安裝

linux一個程序中執行的資源共享

在說執行緒資源共享之前,我們先來說來說一下執行緒的概念,執行緒是程序內部的一條執行序列(即執行流),一個程序至少有一個執行緒,即main函式代表的執行流。當然我們也可以通過執行緒庫來建立新的執行緒,這種執行緒我們稱之為函式執行緒,同一個程序中的所有普執行緒是併發執行的。而這些

Windows殺掉全部的子執行

最近遇到一個問題,就是在Windows下怎麼殺掉全部的子執行緒,現把解決方法記錄下。 問題來源:   用python執行了一個bat指令碼,指令碼的內容是執行一系列的adb命令,然後執行一個server。其中需要在新的cmd視窗中執行這些命令,因為最後會在這個視窗中啟動一個server, 這個serve

windows安裝php環境(wampserver)

下載地址:http://www.onlinedown.net/soft/118187.htm   首先在該頁找到“下載地址”處,選擇任意地址開始下載。將WampServer軟體包下載至本地後雙擊解壓找到.exe格式檔案並執行。如下:在該介面我們直接單擊【next】開始安裝。 因

Caffe:CPU模式使用openblas-openmp(執行版本)

從所周知,所有的深度學習框架使用GPU執行是最快的,但是在不具備Nvidia顯示卡的環境下只使用CPU來執行,慢就慢點吧,對於學習階段還是夠用的。 Caffe用到的Blas可以選擇Altas,OpenBlas,Intel MKL,Blas承擔了大量了數學工作,

linux C++如何實現執行

多執行緒是多工處理的一種特殊形式,多工處理允許讓電腦同時執行兩個或兩個以上的程式。一般情況下,兩種型別的多工處理:基於程序和基於執行緒。 基於程序的多工處理是程式的併發執行。 執行緒的多工處理是同一程式的片段的併發執行。 多執行緒程式包含可以同時執行的兩個或多個

基於threading模組Thread,實現執行TCP套接字通訊

伺服器 import socket from threading import Thread import struct, json IP = '127.0.0.1' PORT = 8080 ADD = (IP, PORT) server = socket.socket

PHP Curl執行原理例項詳解

<?php  // 建立一對cURL資源  $ch1 = curl_init();  $ch2 = curl_init();  // 設定URL和相應的選項  curl_setopt($ch1, CURLOPT_URL, "http://www.jb51.net/");  curl_setopt($