2015-12-21 21:56:57 8393次浏览 7条回答 1 悬赏 10 金钱

PHP或者Yii2有没有类似异步执行代码的方法,比如Node.js等的回调这种。
具体情况是:我在一个Controller的actionCreate里面要执行的操作比较多,如果等所有代码执行完,再return,这样用户等待的时间有点长,甚至会出现超时的情况。
请问各位同仁,有没有比较好的解决方案?

  • 回答于 2015-12-21 22:17 举报

    用ajax去实现?

    2 条回复
    回复于 2015-12-22 08:47 回复

    是在Controller内部,不是View,而且也不是网络请求(T T)

    回复于 2015-12-22 11:12 回复

    好像有人写过类似的扩展让php支持多线程,你网上慢慢找下。如果实现难度大就看看简化或者更换下实现方式。

  • 回答于 2015-12-22 09:21 举报

    一个间接的方法,在处理的同时,用循环curl去访问你要的方法。

  • 回答于 2015-12-22 15:52 举报

    这种场景最简单的方法是使用消息队列的发布订阅模式:前端控制器往队列中写作业的参数消息,后台作业消费消息,处理任务;根据负载情况调整处理作业的进程数。

    你也可以用一些异步方案,比如 swoolehttp://www.swoole.com/ , workerman:http://www.workerman.net/

  • 回答于 2015-12-23 10:25 举报

    你需要研究一下队列

  • 回答于 2015-12-24 15:03 举报

    widget

  • 回答于 2016-04-13 16:09 举报

    用beanstalk ,我们公司用它异步写资源消耗的日志.3w玩家/天,一年多了基本没出过问题.取的时候多开几个线程取就行了.需要一个相对大些的内存,读取数据太慢的话挺占内存的.配置一些参数把缓存的使用空间弄小一些,虽然不是独占的,但是好像php不会主动使用缓存所占的内存.

  • 回答于 2017-12-25 20:04 举报

    yield

您需要登录后才可以回答。登录 | 立即注册
八宝粥
总监

八宝粥 北京

注册时间:2015-04-18
最后登录:2019-01-27
在线时长:26小时12分
  • 粉丝30
  • 金钱4425
  • 威望20
  • 积分4885

热门问题