热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP异步调用的实现方式

PHP异步调用的实现方式:比如现在有个需求,就是给大量用户发送邮件:$i0;while($i对于以上事例代码的用户体验就很差,实际上也没人会这么干,那么怎样使用程序后台异步执行,而
比如现在有个需求,就是给大量用户发送邮件:

$i=0; while ($i <100000) { send_mail(); //发送邮件实现代码 $i++; }

对于以上事例代码的用户体验就很差,实际上也没人会这么干,那么怎样使用程序后台异步执行,而又不影响用户的体验呢?
求思路...

回复内容:

比如现在有个需求,就是给大量用户发送邮件:

$i=0; while ($i <100000) { send_mail(); //发送邮件实现代码 $i++; }

对于以上事例代码的用户体验就很差,实际上也没人会这么干,那么怎样使用程序后台异步执行,而又不影响用户的体验呢?
求思路...

我们使用的是laravel框架 + beanstalkd 队列,网上有安装和使用的说明.
youku里有一个laravel框架的视频教程,有一章就是讲队列的.
简单点,你按照那上面来做一遍就行了.
http://v.youku.com/v_show/id_XNzgzNjQ2ODQ0.html
Laravel+Redis也行,你自己先试试,不明白继续提问.

还有一种方式,你用swoole框架. 用里面的异步调用.详见:www.swoole.com
或者更简单的方式,但不适合你这种情况,但可以参考:http://www.laruence.com/2008/04/14/318.html
你看着三种方式哪种更适合些?

用redis服务 消息队列做两个php进程的之间的通讯,实现多个进程异步执行

使用消息队列。

1、建立一个邮件队列数据表和一个插入邮件队列的PHP公共函数
2、在需要发送邮件的地方,调用上面的PHP公共函数,将邮件先写到邮件队列中。
3、用crontab建立一个定时任务,定期扫描邮件队列,如果有未发送的邮件,则进行发送

其实示例代码没有错,实际上也就是这么做的,只不过是作为单独一个进程来执行的,就像楼上几位说的一样。但是这依然是用阻塞模式运行的。

redis队列和php多进程,和一楼思路一样的,之前项目中也是用的这种方式。

推荐Gearman,百万级生产环境跑过。

我们的shopex为了兼容各种虚拟主机曾经这么干过:

页面下面挂个

推荐阅读
  • php怎么做rpc通信(RPC通信)
    导读:很多朋友问到关于php怎么做rpc通信的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
  • 如何通过swoole加速laravel的问题?
    这篇文章主要介绍了关于如何使用swoole加速laravel,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下再来复习一下吧,导致php慢的各种因素中解析性语言的 ... [详细]
  • PHP 的 Web 運行原理 ( 4 ) - Reactor 的實現之 Swoole
    本篇文章,咱們將要在說明另一個在php實現reactor模式的東西本篇文章分為以下幾個章節:swoole官網寫到: ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 嵌入式处理器的架构与内核发展历程
    本文主要介绍了嵌入式处理器的架构与内核发展历程,包括不同架构的指令集的变化,以及内核的流水线和结构。通过对ARM架构的分析,可以更好地理解嵌入式处理器的架构与内核的关系。 ... [详细]
  • 【前端工具】nodejs+npm+vue 安装(windows)
    预备先看看这几个是干嘛的,相互的关系是啥。nodejs是语言,类比到php。npm是个包管理,类比到composer。vue是个框架&# ... [详细]
  • 一、概述nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,相对于其它一些系统资源监控工具来说,nmon所记录的信息是比较全面的 ... [详细]
  • 依赖注入_php 依赖注入容器
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了php依赖注入容器相关的知识,希望对你有一定的参考价值。原文: http://blog.csdn.net/r ... [详细]
  • 某天看jQuey的deffered对象的时候,突然想起了曾经面试的一个关于ajax的问题,就是同时发送三个ajax请求,当三个请求都成功的时候输出1,当时不知道jQuery的$.w ... [详细]
  • ThinkPHP视频教程第二十五集:关联模型
    php教程|php手册thinkphp代码,代码示例,代码参考,php短信,数据库备份代码,令牌验证,去除代码中的空白和注释Thinkphpphp教程-php手册对学习Thinkp ... [详细]
  • php composer 安装,phpstudy  composer 使用安装
    本人是windows系统phpstudy是最新2018版本以安装laravel框架为例子一如图一,点击phpComposer出现系统指令框,根据指令框路 ... [详细]
  • 1.判断磁盘使用空间df-h|grep-vFile|seds%g|awk{if($580)print使用空间超过了80%:,$6}或#!binbash#Filename:di ... [详细]
  • 前提:已经成功安装Docker创建mysql容器执行以下命令创建容器dockerrun-d-p3306:3306-eMYSQL_ROOT_PASSWORDwqg951122--na ... [详细]
  • 本文所述PHP框架Swoole定时器Timer特性分析具有很好的实用价值,值得PHP程序开发人员学习借鉴。具体分析如下:首先,在各种业务型系统中,往往需要服务器在后台扫描相关数据, ... [详细]
  • 下载链接:https:pan.baidu.coms1ds_xFq1Rd1_xC4515BRGXw 提取码:soho (源码,全插件)云之道知识付费v1.8.2,商用无限开+修复版小 ... [详细]
author-avatar
林子冰2011
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有