php多线程抓取多个网页(phpcurl的curl_multi系列函数能实现此功能(组图))
优采云 发布时间: 2021-09-23 03:23php多线程抓取多个网页(phpcurl的curl_multi系列函数能实现此功能(组图))
最近几天,您正在进行多搜索引擎关键字排名查询工具,以便及时,方便地了解主要搜索引擎中的关键词。抓取360搜索时,发现360搜索只支持10个搜索结果每页。如果您想获得100个搜索结果数据,您必须搜索10次,它是非常影响用户的体验,没有人会查询关键字排名。愿意等待10个网页。此时,我想使用多线程并发崩溃,只是PHP CURL的CURL_MULTI系列功能可以实现此功能。
一、 curl_multi系列函数:1. curl_multi_init:
用于初始化“curl_multi”句柄,然后生成由多个“curl_init”函数生成的“curl”句柄,以“curl_multi”句柄生成;此功能不需要是参数。
2. curl_multi_add_handle:
“curl_multi_add_handle”函数用于将“CURL_INIT”生成的“CURL”句柄添加到“CURL_MULTI_INIT”函数生成的“CURL_MULTI”句柄。 “curl_multi_add_handle”函数的第一个参数是“curl_multi”句柄,第二个参数是“curl”句柄。
3. curl_multi_exec:
“curl_multi_exec”用于发起CURL_MULTI请求。 “curl_multi_add_handle”函数的第一个参数是“curl_multi”句柄,第二个参数是一个“参考参数”,它记录当第二个参数值变为0时不处理的请求的数量,表示它已经存在的所有请求完成(所有请求成功返回或达到超时)。
4. curl_multi_info_read:
“curl_multi_info_read”函数用于读取curl_multi句柄,如果有卷曲返回消息,如果有一个第一个“卷曲返回值(array形式)”,否则返回“false”,循环调用此函数直到它返回“错误的”; “curl_multi_info_read”参数是“curl_mulit”句柄。
5. curl_multi_getcontent:
完成所有卷曲处理处理时,我们可以使用“卷曲”功能来读取“卷曲”返回内容。 “curl_multi_getcontent”的参数是“curl”句柄。
6. curl_multi_remove_handle:
读取内容后,使用“curl_muli_remove_handle”函数从“curl_mulit”句柄中的所有“卷曲”句柄。 “curl_multi_remove_handle”函数的第一个参数是“curl_multi”句柄,第二个参数是“卷曲”句柄。
7. curl_multi_close:
“curl_multi_close”函数用于关闭“curl_mulit”句柄以释放占用的资源。 “curl_multi_close”的参数是“curl_mulit”句柄。
二、 curl_multi使用过程:
1、“curl_multi_init”初始化“curl_multi”句柄;
2、循环创建并添加“curl”句柄,将其添加到“curl_multi_add_handle”函数的“curl_multi”句柄;
3、使用“curl_multi_exec”启动请求,并等待所有请求处理完成;
4、使用“curl_multi_info_read”函数读取返回值;
5、使用“curl_multi_getcontent”函数来读取返回内容;
6、使用“curl_multi_remove_handle”函数删除卷曲句柄;
7、使用“curl_multi_close”关闭curl_multi句柄。
三、以下是我使用curl_multi多线程并发360搜索返回结果的代码片段:#multhreaded Concurrent Grip函数mfetch:
<p>