Home Backend Development PHP Tutorial Application of curl_multi in php multi-process

Application of curl_multi in php multi-process

May 28, 2017 am 09:37 AM
multi-Progress

I believe many people have a headache about the functions of the curl_multi family that are unclear in PHP Manual. They have few documents and the examples given are so simple that you can’t learn from them. I have also I searched many web pages but could not find a complete application example.

  • curl_multi_add_handle

  • curl_multi_close

  • ##curl_multi_exec

  • curl_multi_getcontent

  • ##curl_multi_info_read
  • ##curl_multi_init
  • ##curl_multi_remove_handle

  • curl_multi_select

  • Generally speaking, when you think of using these functions, the purpose should obviously be to request multiple URLs at the same time, rather than one by one. Request, otherwise it is better to

    loop
  • to adjust curl_exec yourself.

The steps are summarized as follows: Step one: Call curl_multi_init

Step two: Call curl_multi_add_handle in a loop

It should be noted in this step that the second parameter of curl_multi_add_handle is given by Subhandle from curl_init.

Step 3: Continuously call curl_multi_exec

Step 4: Cyclically call curl_multi_getcontent to obtain the results as needed
Step 5: Call curl_multi_remove_handle, and call curl_close for each word handle
Step 6: Call curl_multi_close

Here is a simple example found online, the author calls it
dir
ty example, (I will explain why dirty later):

/*
Here's a quick and dirty example for curl-multi from PHP, tested on PHP 5.0.0RC1 CLI / FreeBSD 5.2.1
*/
Application of curl_multi in php multi-process##$conno<img src=mains = array(
"http://www.cnn.com /",Application of curl_multi in php multi-process ($connomains as $i => $url) { $conn[$i]=curl_init($url);
curl_se
topt($conn[$i],CURLOPT_RETURNTRANSFER ,1); curl_multi_add_handle ($mh,$conn[$i]);
}
Application of curl_multi in php multi-process##do { $n=curl_multi_exec($ mh,$active); } <img src=while
($active);
foreach ($connomains as $i => $url) {Application of curl_multi in php multi-process      $res[$i]=curl_multi_getcontent($conn[$i]);<img src=
print
_r($res);

The whole usage process is almost like this. However, this simple code has a fatal weakness, which is in the do loop. That section is an infinite loop during the entire URL request, which can easily cause the CPU to occupy 100%.

Now let's improve it. Here we need to use a function curl_multi_select that has almost no documentation. Although C's curl library has instructions for select, the

interface

and usage in php It is indeed different from C.

Change the do section above to the following:

do {
                                                                                                                                                                                                                                       because ULTI_PERFORM);
While ($ Active and $ Mrc == CURLM_OK) { IF (CURL_MultI_SELECT ($ MH)! = --1) {
## Do {Application of curl_multi in php multi-process$ Mrc = Curl_multi_exec ($ MH, $ Active); <img src=set

opt before curl_multi_add_handle :

curl_setopt($ch, CURLOPT_

TIME

OUT, $timeout);

To determine whether there is a timeout or other errors, use: curl_error($conn[$i] before curl_multi_getcontent );

The above is the detailed content of Application of curl_multi in php multi-process. For more information, please follow other related articles on the PHP Chinese website!

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

Video Face Swap

Video Face Swap

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

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)

Application method of shared memory between multiple processes in Golang function Application method of shared memory between multiple processes in Golang function May 17, 2023 pm 12:52 PM

As a highly concurrent programming language, Golang's built-in coroutine mechanism and multi-threaded operations enable lightweight multi-tasking. However, in a multi-process processing scenario, communication and shared memory between different processes have become key issues in program development. This article will introduce the application method of realizing shared memory between multiple processes in Golang. 1. How to implement multi-process in Golang In Golang, multi-process concurrent processing can be implemented in a variety of ways, including fork, os.Process,

Let's talk about multi-process and multi-threading in Node.js Let's talk about multi-process and multi-threading in Node.js Jul 25, 2022 pm 07:45 PM

Everyone knows that Node.js is single-threaded, but they don’t know that it also provides a multi-thread module to speed up the processing of some special tasks. This article will lead you to understand the multi-threading of Node.js, hoping to learn more about it. Everyone helps!

Is golang multi-process? Is golang multi-process? Jul 07, 2023 am 10:18 AM

Golang is a multi-process, and its thread model is the MPG model. Overall, Go processes and kernel threads correspond to many-to-many, so first of all, they must be multi-threaded. Golang has some so-called M ratio N model. N go routines can be created under M threads. Generally speaking, N is much larger than M. It is essentially a multi-threaded model. However, the scheduling of coroutines is determined by the runtime of Go. It is emphasized that developers should Use channels for synchronization between coroutines.

Locks and synchronization in Python concurrent programming: keeping your code safe and reliable Locks and synchronization in Python concurrent programming: keeping your code safe and reliable Feb 19, 2024 pm 02:30 PM

Locks and Synchronization in Concurrent Programming In concurrent programming, multiple processes or threads run simultaneously, which can lead to resource contention and inconsistency issues. To solve these problems, locks and synchronization mechanisms are needed to coordinate access to shared resources. Concept of Lock A lock is a mechanism that allows only one thread or process to access a shared resource at a time. When one thread or process acquires a lock, other threads or processes are blocked from accessing the resource until the lock is released. Types of locks There are several types of locks in python: Mutex lock (Mutex): ensures that only one thread or process can access resources at a time. Condition variable: Allows a thread or process to wait for a certain condition and then acquire the lock. Read-write lock: allows multiple threads to read resources at the same time, but only allows one thread to write resources

A summary of frequently asked questions about PHP multi-process development interviews (with answers) A summary of frequently asked questions about PHP multi-process development interviews (with answers) Dec 21, 2022 pm 05:30 PM

This article brings you relevant knowledge about PHP, which mainly introduces issues related to PHP multi-process development. Here is a summary of some multi-process development issues for you, with answers. Let’s take a look at them together. I hope it will be helpful to everyone. helpful.

Detailed explanation of how node implements multi-process? How to deploy node project? Detailed explanation of how node implements multi-process? How to deploy node project? Aug 03, 2022 pm 08:23 PM

How to implement multi-process in node? How to deploy node project? The following article will help you master the relevant knowledge of Node.js multi-process model and project deployment. I hope it will be helpful to you!

Golang concurrent programming skills: in-depth analysis of the multi-process model Golang concurrent programming skills: in-depth analysis of the multi-process model Feb 29, 2024 am 10:36 AM

Golang Concurrent Programming Tips: In-depth Analysis of the Multi-Process Model In the field of concurrent programming, Golang, as a powerful programming language, is favored by developers for its concise syntax and built-in concurrency support. In Golang, concurrent programming can be easily implemented using goroutine and channel, improving program performance and efficiency. However, in some specific scenarios, using the multi-process model is also an effective concurrent programming method. This article will provide an in-depth analysis of how to use Golang

How to use multi-process in Go? How to use multi-process in Go? May 11, 2023 pm 03:24 PM

With the improvement of computer performance and the popularity of multi-core processors, multi-process programming has gradually become an indispensable part of the modern programming field. In the Go language, multi-process programming is also very easy to implement. This article will introduce how to use multi-process in Go. 1. Goroutines In the Go language, concurrent programming can be achieved through Goroutines. "Goroutine" can be regarded as a "lightweight thread" in the Go language. Goroutines are scheduled by the Go runtime, and

See all articles