How to implement true PHP multi-threading using pthreads
This article mainly introduces the method of using pthreads to achieve real PHP multi-threading. It has a certain reference value. Now I share it with you. Friends in need can refer to
PHP 5.3 or above version. Using the pthreads PHP extension, PHP can truly support multi-threading. Multi-threading can greatly shorten program execution time when processing repetitive loop tasks
I said in my previous article that the performance bottleneck of most websites is not on the PHP server, because it can simply increase the server horizontally Or the number of CPU cores to easily cope with it (for various cloud hosts, it is more convenient to increase the VPS or the number of CPU cores. You can add VPS directly with the backup image, without even installing and configuring the operating system and environment). Instead, it lies in the MySQL database.
If you use a MySQL database and a joint query SQL, you may be able to handle the business logic. However, if you encounter a large number of concurrent requests, you will stop working.
If you use a NoSQL database, it may take ten queries to process the same business logic, but each query is faster than MySQL. Ten loop NoSQL queries may be faster than a MySQL joint query. Tens of thousands of queries/second are no problem at all.
If you add PHP multi-threading, query NoSQL through ten threads at the same time, and return the result summary output, the speed will be faster. In our actual APP product, we call a PHP interface that recommends products in real time based on user preferences. PHP needs to initiate 500 to 1,000 queries to the BigSea NoSQL database to calculate the user's personalized preference product data in real time. The role of PHP multi-threading is very obvious.
PHP extension download: https://github.com/krakjoe/pthreads
PHP manual document: http://php.net/manual/zh/book .pthreads.php
1. Extended compilation and installation (Linux), the compilation parameter --enable-maintainer-zts is a required option:
cd /Data/tgz/php-5.5.1 ./configure --prefix=/Data/apps/php --with-config-file-path=/Data/apps/php/etc --with-mysql=/Data/apps/mysql --with-mysqli=/Data/apps/mysql/bin/mysql_config --with-iconv-dir --with-freetype-dir=/Data/apps/libs --with-jpeg-dir=/Data/apps/libs --with-png-dir=/Data/apps/libs --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt=/Data/apps/libs --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-opcache --with-pdo-mysql --enable-maintainer-zts make clean make make install unzip pthreads-master.zip cd pthreads-master /Data/apps/php/bin/phpize ./configure --with-php-config=/Data/apps/php/bin/php-config make make install
Add in php.ini:
vi /Data/apps/php/etc/php.ini extension = "pthreads.so"
Gives a PHP multi-threading and For loop to capture the PHP code example of Baidu search page:
<?php class test_thread_run extends Thread { public $url; public $data; public function __construct($url) { $this->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); curl_close($curl); return $result; } for ($i=0; $i < 100; $i++) { $urls_array[] = array("name" => "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)." "; $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)." "; ?>
The above is the entire content of this article. I hope it will be useful for everyone's learning. For help, please pay attention to the PHP Chinese website for more related content!
Related recommendations:
How to solve the problem of garbled characters when importing csv files into PHP
About thinkphp to implement sending email passwords Introduction to the retrieval function
The above is the detailed content of How to implement true PHP multi-threading using pthreads. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP does not support multi-threading. The reason is: PHP does not support multi-threading by default. To use multi-threading, you need to install the pthread extension. To install the pthread extension, you must use the --enable-maintainer-zts parameter to recompile PHP.

How to use PHP multi-threading to implement a high-performance RPC server. With the continuous development of the Internet, there are more and more demands for distributed systems. Remote Procedure Call (RPC) is one of the communication mechanisms often used in these distributed systems. It allows programs on different machines to call remote functions just like calling local functions, thereby realizing data transmission and function calls between systems. In actual development, in order to improve the performance and concurrent processing capabilities of the system, multi-threading technology is used to

How to improve database read and write performance through PHP multi-threading. With the rapid development of the Internet, database read and write performance has become a key issue. When our application needs to frequently read and write to the database, using a single-threaded approach often leads to performance bottlenecks. The use of multi-threading can improve the efficiency of database reading and writing, thereby improving overall performance. As a commonly used server-side scripting language, PHP has flexible syntax and powerful database operation capabilities. This article will introduce how to use PHP multi-threading technology to improve

How to improve the speed of large-scale data sorting through PHP multi-threading. With the rapid development of the Internet and the popularity of big data, the demand for processing massive data is also increasing. Among them, for the common problem of data sorting, how to improve the processing speed has become an urgent problem to be solved. In the field of PHP, multi-threading technology is considered an effective solution. This article will introduce how to improve the speed of large-scale data sorting through PHP multi-threading. 1. The principle of multi-threading Multi-threading refers to the existence of multiple threads at the same time. Multiple threads can execute different tasks at the same time.

How to improve database query performance through PHP multi-threading Introduction: With the rapid development of the Internet, database query performance has become one of the important challenges faced by developers. As a widely used server-side scripting language, PHP also plays an important role in database queries. This article will explore how to improve database query performance through PHP multi-threading technology to meet the needs of high concurrent requests. 1. What is multi-threading? Before discussing how to use multi-threading to improve database query performance, we first need to understand what multi-threading is. popular

PHP multi-threaded programming practice: using coroutines to implement concurrent task processing. With the development of Internet applications, the requirements for server performance and concurrent processing capabilities are becoming higher and higher. Traditional multi-threaded programming is not easy to implement in PHP, so in order to improve PHP's concurrent processing capabilities, you can try to use coroutines to implement multi-threaded programming. Coroutine is a lightweight concurrency processing model that can implement concurrent execution of multiple tasks in a single thread. Compared with traditional multi-threading, coroutine switching costs are lower

How to accelerate large file downloads through PHP multi-threading In today's Internet era, file transfer has become more and more common and important. However, for larger files, the download time increases significantly, causing inconvenience to users. In order to improve the download speed of large files, we can achieve acceleration through PHP multi-threading. This article will introduce how to speed up large file downloads through PHP multi-threading. First, in order to implement PHP multi-threaded downloading, we need to do some preparations. Make sure the latest version of PHP is installed on the server and enabled

In PHP programming, multi-threading is a very important programming technique if we need to perform multiple tasks or handle multiple requests at the same time. Multi-threading can enable multiple threads to run at the same time, improving program efficiency and user experience. 1. Introduction to PHP multi-threading PHP multi-threading refers to a program that executes two or more threads at the same time. Each thread is an independent sub-process and can perform tasks independently. In PHP, multithreading can be handled through the pcntl extension. The pcntl extension is a process control extension supported by PHP
