PHP --发起异步请求,忽略返回值

本文介绍了在PHP业务场景中如何实现异步请求,特别是对于记录用户操作行为并上报日志的情况。由于PHP本身不支持多线程,作者提出了使用fsockopen和fputs来发起请求,无需等待返回,从而实现异步处理。通过fsockopen函数的例子,展示了如何手动拼接header并发起请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在业务开发的过程中遇到一个问题,需要时时发送异步请求而不用的等待结果的返回,我们具体来聊下:

业务场景:记录所有用户操作行为的日志并且上报到某个服务器地址进行入库处理,所以这时需要的是异步处理这些上报的日志请求,忽略返回值。

PHP 本身没有多线程的东西,但可以曲线的办法来造就出同样的效果,比如多进程的方式来达到异步调用,只限于命令模式。还有一种更简单的方式,可用于 Web 程序中,那就是用 fsockopen()、fputs() 来请求一个 URL 而无需等待返回,如果你在那个被请求的页面中做些事情就相当于异步了

fscokopen()函数:fsockopen支持socket编程,可以使用fsockopen实现邮件发送等socket程序等等,使用fcockopen需要自己手动拼接出header部分,可以参考官网文档: http://cn.php.net/fsockopen/

下面是我实现的简单例子:

    /**
     * 发起异步请求,忽略返回值
     * @param $url
     * @param array $params
     * @return bool
     */
    public static function asyncPost($url, $params = [])
    {
        $args = parse_url($url); //对url做下简单处理
        $host = $args['host']; //获取上报域名
        $path = $args['path'] . '?' . http_build_query($params);//获取上报地址

        $fp = fsockopen($host, 80, $error_code, $error_msg, 1);
        if (!$fp) {
            Yii::error($error_code . ' 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值