php异步实现

 午夜呻吟的诱惑 发布于 2022-12-01 12:15

php本身是没有异步的,但我们经常会需要处理一些耗时操作,如微信公号推送给所有用户。试过很多方法都没有做到,每一条推送一个网络请求,curl每次好像最少一秒,请求次数多肯定不行。fscokopen post json数据没解决,一直出现post data empty,请各路高手支招,给一些解决方法!

8 个回答
  • 耗时操作就不用放在web上了,你可以用php写脚本把耗时操作放进去,然后web上面通过执行脚本并忽略输出达到异步效果,这是我使用的方法,如果你看到有更好的回答,记得 @ 我看一下哈哈哈。下面是示例代码:

    pclose(popen('/usr/local/php5/bin/php tmp.php &', 'r'));
    // 继续你的代码
    2022-12-01 13:04 回答
  • 可以使用gearman for php

    或者swoole 来处理。

    2022-12-01 13:04 回答
  • 可以用消息队列

    2022-12-01 13:04 回答
  • 消息队列处理耗时任务, gearman php-resque
    或者 fastcgifinishrequest

    2022-12-01 13:04 回答
  • 可以借助用 redis的队列,实现逐步推送的功能。里面实现的原理比较简单, redis执行的速度很快的

    2022-12-01 13:04 回答
  • 把耗时的任务存储到数据库,然后专门写一个PHP CLI进程循环处理数据库里的任务.
    这些耗时的任务不应该在Web上(MOD_PHP,PHP-FPM)执行,以免影响Web服务.

    2022-12-01 13:04 回答
  • php+rabbitmq,”微信公号推送给所有用户“作为一个单独模块,每次需要发送消息可以放到消息队列里,之后的都交给rabbitmq处理

    2022-12-01 13:04 回答
  • 同上,php+rabbitmq,”微信公号推送给所有用户“作为一个单独模块,每次需要发送消息可以放到消息队列里,之后的都交给rabbitmq处理

    2022-12-01 13:04 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有