实现PHP多线程异步请求的3种方法

 更新时间:2014年01月17日 16:06:40   作者:  
实现PHP多线程异步请求的方法有很多,在本文整理了3种不多的常用方法,大家可以参考下
在网上看过很多版本的PHP异步请求方法,这里简单总结几个常用方法分享给大家

1、用CURL实现一步请求

CURL扩展是我们在开发过程中最常用的一种方法,他是一个强大的HTTP命令行工具,可以模拟POST/GET等HTTP请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。

示例:
复制代码 代码如下:

<?php
$cl = curl_init();
$curl_opt = array(CURLOPT_URL, 'http://www.uncletoo.com/demo.php',
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");
//这里是要执行的代码
//...
pclose($file);
?>

popen()函数直接打开一个指向进程的管道,速度快,即时相应。但是这个函数是单项的,要么读要么写,而且如果并发数较大,则会产生大量进程,给服务器造成负担。

另外,如同示例中一样,程序结束后一定要用pclose()来关闭。

3、用fscokopen()函数实现异步请求

我们在平时开发邮件发送功能等socket编程时,都会用到这个函数,在使用这个函数之前,我们要在PHP.ini 中开启 allow_url_fopen 选项,另外在变成时,我们还要自己手动拼接出header部分。

示例:
复制代码 代码如下:

$fp = fsockopen("www.uncletoo.com/demo.php", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /index.php / HTTP/1.1\r\n";
$out .= "Host: www.uncletoo.com\r\n";
$out .= "Connection: Close\r\n\r\n";

fwrite($fp, $out);
/*这里忽略执行结果
*测试时可以打开
while (!feof($fp)) {
echo fgets($fp, 128);
}*/
fclose($fp);
}

PHP本身没有多线程,但是我们可以用其他方式来实现多线程的效果,上面列举的三种方式都有各自的优缺点,大家在使用时可以根据程序的需要择优选择。

UncleToo经验尚浅,这里就简单总结了这么多,如果有其他更好的实现PHP多线程的方法可以一起讨论!

相关文章

  • PHP SESSION机制的理解与实例

    PHP SESSION机制的理解与实例

    今天小编就为大家分享一篇关于PHP SESSION机制的理解与实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 提高PHP性能的编码技巧以及性能优化详细解析

    提高PHP性能的编码技巧以及性能优化详细解析

    include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少
    2013-08-08
  • php文件操作之小型留言本实例

    php文件操作之小型留言本实例

    这篇文章主要介绍了php文件操作之小型留言本,实例分析了php基于文件实现的留言本功能,需要的朋友可以参考下
    2015-06-06
  • PHP基于接口技术实现简单的多态应用完整实例

    PHP基于接口技术实现简单的多态应用完整实例

    这篇文章主要介绍了PHP基于接口技术实现简单的多态应用,结合完整实例形式分析了php接口的定义、继承、调用及多态的相关实现技巧,需要的朋友可以参考下
    2017-04-04
  • PHP实现的随机红包算法示例

    PHP实现的随机红包算法示例

    这篇文章主要介绍了PHP实现的随机红包算法,结合实例形式分析了php随机红包算法的原理、实现方法与相关注意事项,需要的朋友可以参考下
    2017-08-08
  • PHP的AES加密算法完整实例

    PHP的AES加密算法完整实例

    这篇文章主要介绍了PHP的AES加密算法,结合完整实例形式分析了php的AES加密算法类及其具体用法,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • PHP中类的继承和用法实例分析

    PHP中类的继承和用法实例分析

    这篇文章主要介绍了PHP中类的继承和用法,较为详细的分析了php中类的继承方法、使用方法与相关注意事项,需要的朋友可以参考下
    2016-05-05
  • php创建桌面快捷方式实现方法

    php创建桌面快捷方式实现方法

    这篇文章主要介绍了php创建桌面快捷方式实现方法,需要的朋友可以参考下
    2015-12-12
  • php下载远程文件类(支持断点续传)

    php下载远程文件类(支持断点续传)

    1.功能:支持断点续传的下载,能计算传输率,能控制传输率
    2008-11-11
  • PHP实现多文件上传的方法

    PHP实现多文件上传的方法

    这篇文章主要介绍了PHP实现多文件上传的方法,可实现文件批量上传、设置文件后缀名、修改文件名等功能,非常具有实用价值,需要的朋友可以参考下
    2015-07-07

最新评论