php多线程抓取多个网页(PHP异步请求方法分享(图)常用方法(组图))

优采云 发布时间: 2022-03-23 18:19

  php多线程抓取多个网页(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中文网,转载请注明出处,感谢您的尊重!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线