当前位置: 首页> 最新文章列表> 如何正确使用 curl_multi_select 函数实现多线程并发请求,详细步骤和注意事项解析

如何正确使用 curl_multi_select 函数实现多线程并发请求,详细步骤和注意事项解析

gitbox 2025-09-12
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 前置无关代码示例</span></span><span>
</span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">time</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"当前时间戳: "</span></span><span> . </span><span><span class="hljs-variable">$timestamp</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;

</span><span><span class="hljs-variable">$dummyArray</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_fill</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-string">"test"</span></span><span>);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$dummyArray</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$item</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"数组元素: "</span></span><span> . </span><span><span class="hljs-variable">$item</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"初始化完成。\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 文章正文开始</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h1>如何正确使用 curl_multi_select 函数实现多线程并发请求,详细步骤和注意事项解析</h1>"</span></span><span>;

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>在 PHP 中,进行多个 HTTP 请求时,如果依次请求每个 URL,效率会非常低。使用 cURL 提供的 <strong>curl_multi</strong> 系列函数,可以实现并发请求,提高效率。而 <strong>curl_multi_select</strong> 是其中一个关键函数,用于高效地等待多路 cURL 句柄的活动,从而避免 CPU 空转浪费。</p>"</span></span><span>;

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h2>一、基本概念</h2>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> <span class="hljs-string">"<ul>
<li><strong>curl_multi_init()</strong>:初始化一个 cURL 多线程句柄。</li>
<li><strong>curl_multi_add_handle()</strong>:向多线程句柄中添加单个 cURL 请求。</li>
<li><strong>curl_multi_exec()</strong>:执行所有添加的 cURL 请求。</li>
<li><strong>curl_multi_select()</strong>:阻塞等待,直到某个 cURL 句柄有数据可读,避免 CPU 忙等。</li>
<li><strong>curl_multi_getcontent()</strong>:获取单个请求的返回内容。</li>
<li><strong>curl_multi_remove_handle()</strong>:移除单个请求句柄。</li>
<li><strong>curl_multi_close()</strong>:关闭多线程句柄。</li>
</ul>"</span>;

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h2>二、详细步骤</h2>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> <span class="hljs-string">"<ol>
<li><strong>初始化多线程句柄:</strong><br>
<code>\$mh = curl_multi_init();