当前位置:  编程技术>php

PHP异步执行常用方式举例

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

    本文导语:  1.客户端页面采用AJAX技术请求服务器 优点:最简单,也最快,就是在返回给客户端的HTML代码中,嵌入AJAX调用,或嵌入一个img标签,src指向要执行的耗时脚本。 缺点: 一般来说Ajax都应该在onLoad以后触发,也就是说,用户点开...

1.客户端页面采用AJAX技术请求服务器
优点:最简单,也最快,就是在返回给客户端的HTML代码中,嵌入AJAX调用,或嵌入一个img标签,src指向要执行的耗时脚本。

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

2.popen()函数
该函数打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。
所以可以通过调用它,但忽略它的输出。使用代码如下:
 

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

优点:避免了第一个方法的缺点,并且也很快。
缺点:这种方法不能通过HTTP协议请求另外的一个WebService,只能执行本地的脚本文件。
并且只能单向打开,无法穿大量参数给被调用脚本。并且如果访问量很高时,会产生大量的进程。如果使用到了外部资源,还要自己考虑竞争。

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

代码示例:
$ch = curl_init();
$curl_opt = array(CURLOPT_URL, 'http://www.example.com/backend.php',
                            CURLOPT_RETURNTRANSFER, 1,
                            CURLOPT_TIMEOUT, 1,);
curl_setopt_array($ch, $curl_opt);
curl_exec($ch);
curl_close($ch);
 

缺点:由于使用CURL需要设置CUROPT_TIMEOUT为1(最小为1,郁闷)。
即客户端至少必须等待1秒钟。

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

例子:
 

代码示例:
$fp = fsockopen("www.", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)
n";
} else {
    $out = "GET /index.php  / HTTP/1.1rn";
    $out .= "Host: www.rn";
    $out .= "Connection: Closernrn";
 
    fwrite($fp, $out);
    /*忽略执行结果
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }*/
    fclose($fp);
}
?

小结:fscokopen()函数可以满足需求,建议测试下。


    
 
 

您可能感兴趣的文章:

  • PHP异步执行技巧分享
  • php 异步请求文件实现多线程的代码
  • PHP异步执行模拟多线程的方法
  • PHP异步调用socket小例子
  • php 伪异步执行实现方法
  • PHP 异步框架 phpdaemon
  • PHP服务器端异步执行方法解析
  • PHP异步调用socket与php异步执行实例
  • PHP多线程异步请求的3种实现方法
  • 实现PHP多线程异步请求的3种方法
  • PHP的异步并行C扩展 swoole-server
  • PHP异步调用实现方式详解
  • php 异步调用方法实现示例
  • php+js实现异步图片上传实例分享
  • PHP异步执行实例解析
  • php使用fscok实现异步调用
  • php+ajax图片文件异步上传示例代码
  • php中检测变量是否是一个对象的is_object函数介绍及用法举例
  • php析构函数用法举例
  • php将html特殊字符转换成html字符串的函数:htmlspecialchars()介绍及代码举例
  • php STDIN标准输入用法举例
  • PHP isset与empty使用举例
  • php zip解压缩类pclzip用法举例
  • php中dirname(__FILE__)用法举例
  • php编码转换方法举例
  • php fastcgi_finish_request的用法举例
  • php获取数组长度的方法举例
  • php配置文件应用举例
  • php url函数用法举例
  • php curl_init函数用法举例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何使用crontab来定时执行一个.php的程序
  • 执行PHP代码的虚拟机 HHVM
  • centos服务器定时执行一段php代码
  • PHP如何设置页面最大执行时间
  • 编程语言 iis7站长之家
  • 求高手给写一个bash脚本,功能很简单,就是去执行某一个php脚本
  • 计算php脚本执行时间的示例代码
  • 命令方式下执行php 可以用类吗?
  • win7计划任务定时执行PHP脚本设置图解
  • php计算当前程序执行时间
  • nginx禁止dedecms目录php执行权限
  • PHP代码执行效率评测 Ubench
  • PHP执行时间函数 ini_set与max_execution_time
  • php计算当前程序执行时间示例
  • php实现执行某一操作时弹出确认、取消对话框
  • nginx php-fpm中启用慢日志配置(用于检测执行较慢的PHP脚本)
  • php计算代码执行时间的二种方法
  • PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
  • php获取目标函数执行时间
  • php获取目标函数执行时间示例
  • 修改配置真正解决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
  • php通过socket_bind()设置IP地址代码示例


  • 站内导航:


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

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

    浙ICP备11055608号-3