当前位置:  编程技术>php

PHP异步调用实现方式详解

    来源: 互联网  发布时间:2014-10-09

    本文导语:  例子,给1000个用户发送一封推荐邮件,用户输入或者导入邮件账号了提交服务器执行发送。   代码示例:     首先,发送这么多邮件会产生服务器运行超时,其实漫长的用户等待时间会让用户对系统产品怀疑和失去信心。 ...

例子,给1000个用户发送一封推荐邮件,用户输入或者导入邮件账号了提交服务器执行发送。
 

代码示例:
 
 

首先,发送这么多邮件会产生服务器运行超时,其实漫长的用户等待时间会让用户对系统产品怀疑和失去信心。
但是用户不需要等待到1000封邮件都发送完毕了才提交发送成功,完全可以提交后台后直接给用户提示发送成功,然后让后台程序静默依次发送。

这时需要“异步执行”技术来执行代码,异步执行的特点是后台静默执行,用户无需等待代码的执行结果,使用异步执行的好处:

1.摆脱了应用程序对单个任务的依赖性

2.提高了程序的执行效率

3.提高了程序的扩展性

4.在一定场景提高了用户体验

5.因为PHP不支持多线程,使用异步调用的请求多个HTTP的方式达到了程序并行执行效果,但是注意的是请求的HTTP过多的话,会大大加大了系统的开销

PHP异步执行的常用方式:

1.客户端页面采用AJAX技术请求服务器

1. 最简单的办法,就是在返回给客户端的HTML代码中,嵌入AJAX调用,或者,嵌入一个img标签,src指向要执行的耗时脚本。
这种方法最简单,也最快。服务器端不用做任何的调用。

缺点:
一般来说Ajax都应该在onLoad以后触发,也就是说,用户点开页面后,就关闭,那就不会触发我们的后台脚本了。
而使用img标签的话,这种方式不能称为严格意义上的异步执行。用户浏览器会长时间等待php脚本的执行完成,也就是用户浏览器的状态栏一直显示还在load。
当然,还可以使用其他的类似原理的方法,比如script标签等等

2.popen()函数
resource popen ( string command, string mode );
//打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。

所以可以通过调用它,但忽略它的输出。
 

代码示例:
pclose(popen("/home/xinchen/backend.php &", 'r'));

此方法避免了第一个方法的缺点,并且也很快。

问题:这种方法不能通过HTTP协议请求另外的一个WebService,只能执行本地的脚本文件。并且只能单向打开,无法穿大量参数给被调用脚本。

访问量很高时,会产生大量的进程。
如果使用到了外部资源,还要自己考虑竞争。

3.CURL扩展

CURL是一个强大的HTTP命令行工具,可以模拟POST/GET等HTTP请求,然后得到和提取数据,显示在"标准输出"(stdout)上面
 

代码示例:

    
 
 

您可能感兴趣的文章:

  • PHP异步执行技巧分享
  • php 异步请求文件实现多线程的代码
  • PHP异步执行模拟多线程的方法
  • PHP异步调用socket小例子
  • php 伪异步执行实现方法
  • PHP 异步框架 phpdaemon
  • PHP服务器端异步执行方法解析
  • PHP异步调用socket与php异步执行实例
  • PHP多线程异步请求的3种实现方法
  • 实现PHP多线程异步请求的3种方法
  • PHP 'ext/soap/php_xml.c'不完整修复存在多个任意文件泄露漏洞 iis7站长之家
  • PHP异步执行常用方式举例
  • php 异步调用方法实现示例
  • php+js实现异步图片上传实例分享
  • PHP异步执行实例解析
  • php使用fscok实现异步调用
  • php+ajax图片文件异步上传示例代码
  • 救命.PHP没有办法调用MYSQL!!!!
  • php 使用system() 调用c程序的问题
  • php调用c++的方法
  • PHP父类调用子类方法的例子
  • php中调用其他系统http接口的方法说明
  • PHP父类调用子类方法的代码例子
  • PHP Thrift Rpc 远程调用框架 workerman-thrift
  • php调用kill命令平滑重启nginx
  • php调用存储过程返回结果集的例子
  • PHP调用VC编写的COM组件实例
  • php中创建和调用webservice接口示例
  • php调用google接口生成二维码示例
  • php调用google接口生成二维码实例
  • php调用nginx的mod_zip模块打包ZIP文件
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php session 原理详解,用法介绍以及如何设置过期时间
  • PHP exif扩展方法开启详解
  • PHP正则匹配图片并给图片加链接详解
  • php mail to 配置详解
  • php运行环境配置详解
  • Windows server 2008搭建php运行环境图文详解(php5.3)
  • PHP中替换键名的简易方法示例详解
  • php 获取完整url地址实例详解
  • php实例分享之通过递归实现删除目录下的所有文件详解
  • PHP $_FILES中error返回值详解
  • centos源码编译php5 mcrypt模块步骤详解
  • php事务处理实例详解
  • php数组编码转换示例详解
  • PHP 正则 email语句详解
  • php.ini文件上传功能配置详解
  • PHP5 时区设置方法详解
  • php数组递归转义实例详解,php转义函数
  • 配置PHP服务器环境步骤详解
  • php引用字符串常量方法详解
  • PHP汉字拼音转换、公历农历转换的实例详解
  • php-fpm优化方法详解
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
  • PHP 5.4.19 和 PHP 5.5.3 发布及下载地址
  • php输入流php://input使用示例(php发送图片流到服务器)
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • PHP转换器 HipHop for PHP
  • PHP去除html标签,php标记及css样式代码参考
  • PHP 框架 Pop php
  • PHP 'ext/soap/php_xml.c'不完整修复存在多个任意文件泄露漏洞
  • PHP的JavaScript框架 PHP.JS




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3