php多线程抓取多个网页(PHP异步请求方法分享(图)常用方法(组图))
优采云 发布时间: 2022-03-23 18:19php多线程抓取多个网页(PHP异步请求方法分享(图)常用方法(组图))
欢迎来到Linux社区论坛与200万技术人员互动>>进入我在网上看到很多版本的PHP异步请求方法,这里简单总结几种常用方法与大家分享1、使用CURL实现一步请求 CURL 扩展 是我们开发过程中最常用的方法之一。是一个功能强大的HTTP命令行工具,可以模拟POST/GET
欢迎来到Linux社区论坛与200万技术人员互动>>进入
我在网上看到过很多版本的PHP异步请求方法。下面简单总结几种常用的方法,与大家分享。
1、使用 CURL 的一步请求
CURL 扩展是我们开发过程中最常用的方法之一。它是一个功能强大的 HTTP 命令行工具,可以模拟 POST/GET 等 HTTP 请求,然后获取和提取数据并显示在“标准输出”(stdout)上。
例子:
[php]
$cl = curl_init();
$curl_opt = array(CURLOPT_URL, '#39;,
CURLOPT_RETURNTRANSFER, 1,
CURLOPT_TIMEOUT, 1,);
curl_setopt_array($cl, $curl_opt);
curl_exec($ch);
curl_close($ch);
由于 CUROPT_TIMEOUT 属性的最小值为 1,这意味着客户端必须等待 1 秒,这也是使用 CURL 方法的缺点
2、使用popen()函数实现异步请求
语法格式:popen(command,mode)
例子:
[php]
$file = popen("/bin/ls","r");
// 这里是要执行的代码
//…
关闭($文件);
popen() 函数直接打开一个指向进程的管道,速度快,响应迅速。但是这个函数是单项的,不管是读还是写,如果并发数很大,会产生大量的进程,给服务器带来负担。
另外,和例子一样,一定要在程序结束后使用pclose()来关闭程序。
3、使用fscokopen()函数实现异步请求
我们在开发邮件发送功能等socket编程时通常会用到这个功能。在使用这个功能之前,我们需要在 PHP.ini 中启用 allow_url_fopen 选项。另外,当它变成时,我们需要自己手动拼接出header部分。.
例子:
[php]
$fp = fsockopen("/demo.php", 80, $errno, $errstr, 30);
如果 (!$fp) {
回声“$errstr($errno)
\n";
} 别的 {
$out = "GET /index.php / HTTP/1.1\r\n";
$out .= "主机:\r\n";
$out .= "连接:关闭\r\n\r\n";
fwrite($fp, $out);
/* 这里忽略执行结果
*可在测试期间打开
而 (!feof($fp)) {
回声 fgets($fp, 128);
}*/
fclose($fp);
}
PHP本身没有多线程,但是我们可以使用其他方法来达到多线程的效果。上面列出的三种方法各有优缺点。您可以在使用时根据程序的需要选择最好的一个。
本文原创发表于php中文网,转载请注明出处,感谢您的尊重!