Home Backend Development PHP Tutorial PHP multi-thread extension (serious threads) pthreads installation_PHP tutorial

PHP multi-thread extension (serious threads) pthreads installation_PHP tutorial

Jul 13, 2016 pm 05:19 PM
centos php pthreads Install Expand environment of thread

环境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目录下有些示例文件,比文档有用,在线文档根本不能说明问题,我修改了一个,执行了一下:

 
<?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

 
Copy after login

 

 

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//名字是不是这个我不确定,自己去下载...
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to optimize CentOS HDFS configuration How to optimize CentOS HDFS configuration Apr 14, 2025 pm 07:15 PM

Improve HDFS performance on CentOS: A comprehensive optimization guide to optimize HDFS (Hadoop distributed file system) on CentOS requires comprehensive consideration of hardware, system configuration and network settings. This article provides a series of optimization strategies to help you improve HDFS performance. 1. Hardware upgrade and selection resource expansion: Increase the CPU, memory and storage capacity of the server as much as possible. High-performance hardware: adopts high-performance network cards and switches to improve network throughput. 2. System configuration fine-tuning kernel parameter adjustment: Modify /etc/sysctl.conf file to optimize kernel parameters such as TCP connection number, file handle number and memory management. For example, adjust TCP connection status and buffer size

Centos configuration IP address Centos configuration IP address Apr 14, 2025 pm 09:06 PM

Steps to configure IP address in CentOS: View the current network configuration: ip addr Edit the network configuration file: sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0 Change IP address: Edit IPADDR= Line changes the subnet mask and gateway (optional): Edit NETMASK= and GATEWAY= Lines Restart the network service: sudo systemctl restart network verification IP address: ip addr

Difference between centos and ubuntu Difference between centos and ubuntu Apr 14, 2025 pm 09:09 PM

The key differences between CentOS and Ubuntu are: origin (CentOS originates from Red Hat, for enterprises; Ubuntu originates from Debian, for individuals), package management (CentOS uses yum, focusing on stability; Ubuntu uses apt, for high update frequency), support cycle (CentOS provides 10 years of support, Ubuntu provides 5 years of LTS support), community support (CentOS focuses on stability, Ubuntu provides a wide range of tutorials and documents), uses (CentOS is biased towards servers, Ubuntu is suitable for servers and desktops), other differences include installation simplicity (CentOS is thin)

Centos shutdown command line Centos shutdown command line Apr 14, 2025 pm 09:12 PM

The CentOS shutdown command is shutdown, and the syntax is shutdown [Options] Time [Information]. Options include: -h Stop the system immediately; -P Turn off the power after shutdown; -r restart; -t Waiting time. Times can be specified as immediate (now), minutes ( minutes), or a specific time (hh:mm). Added information can be displayed in system messages.

What files do you need to modify in HDFS configuration CentOS? What files do you need to modify in HDFS configuration CentOS? Apr 14, 2025 pm 07:27 PM

When configuring Hadoop Distributed File System (HDFS) on CentOS, the following key configuration files need to be modified: core-site.xml: fs.defaultFS: Specifies the default file system address of HDFS, such as hdfs://localhost:9000. hadoop.tmp.dir: Specifies the storage directory for Hadoop temporary files. hadoop.proxyuser.root.hosts and hadoop.proxyuser.ro

PHP: Handling Databases and Server-Side Logic PHP: Handling Databases and Server-Side Logic Apr 15, 2025 am 12:15 AM

PHP uses MySQLi and PDO extensions to interact in database operations and server-side logic processing, and processes server-side logic through functions such as session management. 1) Use MySQLi or PDO to connect to the database and execute SQL queries. 2) Handle HTTP requests and user status through session management and other functions. 3) Use transactions to ensure the atomicity of database operations. 4) Prevent SQL injection, use exception handling and closing connections for debugging. 5) Optimize performance through indexing and cache, write highly readable code and perform error handling.

CentOS HDFS performance tuning tips CentOS HDFS performance tuning tips Apr 14, 2025 pm 06:00 PM

CentOS Platform Hadoop Distributed File System (HDFS) Performance Optimization Guide Optimizing HDFS Performance is a multi-faceted issue, and multiple parameters need to be adjusted for specific situations. The following are some key optimization strategies: 1. Memory management adjusts the NameNode and DataNode memory configuration: reasonably configure the HADOOP_NAMENODE_OPTS and HADOOP_DATANODE_OPTS environment variables according to the actual memory size of the server to optimize memory utilization. Enable large page memory: For high memory consumption applications (such as HDFS), enabling large page memory can reduce memory page allocation and management overhead and improve efficiency. 2. Disk I/O optimization uses high-speed storage

What is the CentOS MongoDB backup strategy? What is the CentOS MongoDB backup strategy? Apr 14, 2025 pm 04:51 PM

Detailed explanation of MongoDB efficient backup strategy under CentOS system This article will introduce in detail the various strategies for implementing MongoDB backup on CentOS system to ensure data security and business continuity. We will cover manual backups, timed backups, automated script backups, and backup methods in Docker container environments, and provide best practices for backup file management. Manual backup: Use the mongodump command to perform manual full backup, for example: mongodump-hlocalhost:27017-u username-p password-d database name-o/backup directory This command will export the data and metadata of the specified database to the specified backup directory.

See all articles