Heim Backend-Entwicklung PHP-Tutorial PHP 多线程扩展(正儿八经的线程)pthreads安装_PHP教程

PHP 多线程扩展(正儿八经的线程)pthreads安装_PHP教程

Jul 13, 2016 pm 05:19 PM
centos php pthreads 安装 扩展 环境 von 线程

环境CentOS 6.3 64bit,php 5.4.5

 
pthreads需要线程安全环境,
 
下载php的安装包,解压:
 
  tar zxvf php-5.4.5.tar.gz//名字是不是这个我不确定,自己去下载
 
安装:
 
./configure --enable-zts --prefix=/usr/local/php-zts
 
make
 
make install
 
结果就把线程安装版的php安装到了/usr/local/php-zts,目前我不了解开启线程安全到底会带来什么影响,所以,就弄两个测试版本。
 
下载和安装pthreads:
 
tar zxvf pthreads
 
cd pthreads-0.0.45 // 本文的是第一个stable版本
 
/usr/local/php-zts/bin/phpize
./configure --with-php-config=/usr/local/php-zts/bin/php-config
make
make install
 
 
 
/usr/local/php-zts/bin/php -i|grep "php.ini"
找出php.ini的位置,修改它把ext=pthreads.so加入进入进去,因为我原来就有php,现在新装的php.ini文件不存在我就考了一个过去……
 
pthreads-0.0.45/examples目录下有些示例文件,比文档有用,在线文档根本不能说明问题,我修改了一个,执行了一下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

<?php 

/*

* Sharing symbols 101

* @NOTE Thread::fetch was never included in a release and was superceeded by object handlers

*   pthreads allows read access to thread data from any context

    pthreads allows write access to thread data from any context

    carry on reading ...

    work in progress ...

*/ 

class TestObject { 

    public $val

   

class Fetching extends Thread { 

    public function run(){ 

        /*

        * of course ...

        */ 

        $this->sym = 10245; 

        $this->arr = array

            "1", "2", "3" 

        ); 

        echo &#39;6&#39;.chr(10); 

        /*

        * objects do work, no preparation needed ...

        * read/write objects isn&#39;t finalized ..

        * so do the dance to make it work ...

        */ 

        $obj = new TestObject(); 

        $obj->val = "testval"

        $this->obj = $obj

        echo &#39;7&#39;.chr(10); 

        /*

        * will always work

        */ 

        $this->objs = serialize($this->obj); 

        echo &#39;8&#39;.chr(10); 

        /*

        * nooooooo

        */ 

        $this->res = fopen("php://stdout", "w"); 

        echo &#39;9&#39;.chr(10); 

        /*

        * tell the waiting process we have created symbols and fetch will succeed

        */ 

        $this->synchronized(function(){ 

            $this->notify(); 

        }); 

        echo &#39;10&#39;.chr(10); 

        /* wait for the process to be finished with the stream */ 

        $this->synchronized(function(){ 

            $this->wait(); 

        }); 

        echo &#39;11&#39;.chr(10); 

    

echo &#39;0&#39;.chr(10); 

$thread = new Fetching(); 

echo &#39;1&#39;.chr(10); 

$thread->start(); 

//sleep(1); 加了这个就不能正常工作,真奇怪 

echo &#39;2&#39;.chr(10); 

$thread->synchronized(function($me){ 

    echo &#39;3&#39;.chr(10); 

    $me->wait(); 

    echo &#39;4&#39;.chr(10); 

}, $thread); 

echo &#39;5&#39;.chr(10); 

   

/*

* we just got notified that there are symbols waiting

*/ 

foreach(array("sym", "arr", "obj", "objs", "res") as $symbol){ 

    printf("\$thread->%s: ", $symbol);    

    $fetched = $thread->$symbol

    if ($fetched) { 

        switch($symbol){ 

            /*

            * manual unserialize

            */ 

            case "objs"

                var_dump(unserialize($fetched)); 

            break

               

            default: var_dump($fetched); 

        

    

    printf("\n"); 

   

/* notify the thread so it can destroy resource */ 

$thread->synchronized(function($me){ 

    $me->notify(); 

}, $thread); 

?> 

 

/usr/local/php-zts/bin/php Fetch.php

 

结果:

 

0

1

2

3

6

7

8

9

10

4

5

$thread->sym: int(10245)

  

$thread->arr: array(3) {

  [0]=>

  string(1) "1"

  [1]=>

  string(1) "2"

  [2]=>

  string(1) "3"

}

  

$thread->obj: object(TestObject)#2 (1) {

  ["val"]=>

  string(7) "testval"

}

  

$thread->objs: object(TestObject)#2 (1) {

  ["val"]=>

  string(7) "testval"

}

  

$thread->res: resource(3) of type (stream)

  

11

Nach dem Login kopieren

 

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/532685.htmlTechArticle环境CentOS 6.3 64bit,php 5.4.5 pthreads需要线程安全环境, 下载php的安装包,解压: tar zxvf php-5.4.5.tar.gz//名字是不是这个我不确定,自己去下载...
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Zwei -Punkte -Museum: Alle Exponate und wo man sie finden kann
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

CakePHP arbeitet mit Datenbank CakePHP arbeitet mit Datenbank Sep 10, 2024 pm 05:25 PM

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

See all articles