PHP之异步调用的理解和实践

本文详细介绍了PHP中的异步调用,包括异步的基本概念、原理,如本地IO操作和线程,以及如何通过回调进行通知。通过多个实战场景,如CURL、fsockopen()和popen()实现异步执行,阐述了异步调用在处理耗时任务中的应用。还探讨了PHP内置的回调函数call_user_func()和call_user_func_array()的使用方法。
摘要由CSDN通过智能技术生成

【推荐阅读】微服务还能火多久?>>> hot3.png

  • 目录
  • 1.前言
  • 2.概念
  • 3.异步原理
  • 3.1 异步的方法类型
  • 3.1.1 本地IO操作
  • 3.1.2线程
  • 3.2 如何通知接收方
  • 3.2.1回调概念
  • 3.2.2异步实战概念
  • 3.2.3异步实战场景
  • 3.2.3.1 情况一:请求-响应模式(同步)
  • 3.2.3.2情况二:使用CURL异步执行实现
  • 3.2.3.3情况三:使用fsockopen()异步执行实现
  • 3.2.3.4情况四:使用popen()指向进程管道异步执行实现
  • 3.2.3.5情况五:使用REDIS消息队列+定时任务异步执行实现
  • 3.2.3.6情况六:使用swoole扩展提供的异步执行实现
  • 4.PHP内置回调函数
  • 4.1 call_user_func()函数
  • 4.1.1 调用普通函数
  • 4.1.2调用类的方法
  • 4.2 call_user_func_array()函数
  • 4.2.1 调用普通函数
  • 4.2.2调用类的方法
  • 5.总结

1.前言

公司项目使用到了异步调用,但是说实际的,我的脑海对异步调用没有形成概念,所以下面,我对这部分内容进行总结和实现一些案例,帮助自己理解和汇总。

代码分享: https://github.com/mtdgclub/asyCall

2.概念

一般来说,我们的调用分为两种,一种是异步调用,一种是同步调用。

  • 同步调用:就是客户端等待调用执行完成并返回结果。
  • 异步调用:实现一个可以无需等待被调用函数的返回值就让操作继续进行的方法。

其实说到异步和同步的概念,就不得不说一下阻塞和非阻塞的概念。这是一些很容易搞混的概念!学过进程的朋友都应该知道,进程间的通信是通过send()和receive()操作完成通信的。而相对于发送方,要么阻塞式发送、要么非阻塞式发送,而对于接收方就是我们上面说过的同步和异步方式接收,所以同步、异步、阻塞、非阻塞是相对于发送方和接收方而言的。

  • 阻塞式发送:发送方进程会一直被阻塞
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值