PHP编程实现脚本异步执行的方法


Posted in PHP onAugust 09, 2017

本文实例讲述了PHP编程实现脚本异步执行的方法。分享给大家供大家参考,具体如下:

php语言得用fsockopen()函数,实现脚本异步运行,代码如下

异步请求函数(用debug参数若为true则为用为调试,开启调试可以看到异步的执行情况,但是失去异步的效果)

main.php

<?php
function request_by_fsockopen($url,$post_data=array(),$debug=false){
  $url_array = parse_url($url);
  $hostname = $url_array['host'];
  $port = isset($url_array['port'])? $url_array['port'] : 80;
  @$requestPath = $url_array['path'] ."?". $url_array['query'];
  $fp = fsockopen($hostname, $port, $errno, $errstr, 10);
  if (!$fp) {
    echo "$errstr ($errno)";
    return false;
  }
  $method = "GET";
  if(!empty($post_data)){
    $method = "POST";
  }
  $header = "$method $requestPath HTTP/1.1\r\n";
  $header.="Host: $hostname\r\n";
  if(!empty($post_data)){
    $_post = strval(NULL);
    foreach($post_data as $k => $v){
    $_post[]= $k."=".urlencode($v);//必须做url转码以防模拟post提交的数据中有&符而导致post参数键值对紊乱
    }
    $_post = implode('&', $_post);
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";//POST数据
    $header .= "Content-Length: ". strlen($_post) ."\r\n";//POST数据的长度
    $header.="Connection: Close\r\n\r\n";//长连接关闭
    $header .= $_post; //传递POST数据
  }else{
    $header.="Connection: Close\r\n\r\n";//长连接关闭
  }
  fwrite($fp, $header);
  //-----------------调试代码区间-----------------
  //注如果开启下面的注释,异步将不生效可是方便调试
  if($debug){
  $html = '';
  while (!feof($fp)) {
  $html.=fgets($fp);
  }
  echo $html;
  }
  //-----------------调试代码区间-----------------
  fclose($fp);
}
$data=array('name'=>'guoyu','pwd'=>'123456');
$url='http://localhost/test/other.php';
request_by_fsockopen($url,$data,true);//

other.php

<?php
header("content-type:text/html;charset=utf-8");
//error_reporting(0);
//ini_set('html_errors',false);
//ini_set('display_errors',false);
$name = isset($_POST['name'])?$_POST['name']:'';
$pwd = isset($_POST['pwd'])?$_POST['pwd']:'';
echo $name.$pwd;
echo 'success ok';
die;
?>

使用实例:

[运行的main.php主脚本文件]

$data=array('name'=>'guoyu','pwd'=>'123456');
$url='http://localhost/test/other.php';
request_by_fsockopen($url,$data,true);//把应用B的用户表异步-同步数据

[导步执行文件other.php]

在other.php中便可以用$_POST接收main.php提交过来的参数,从而进行下一步操作

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
图书管理程序(二)
Oct 09 PHP
PHP实现MVC开发得最简单的方法――模型
Apr 10 PHP
php 读取文件乱码问题
Feb 20 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
Apr 12 PHP
php cli 小技巧
Jun 03 PHP
PHP自带函数给数字或字符串自动补齐位数
Jul 29 PHP
php遍历删除整个目录及文件的方法
Mar 13 PHP
PHP实现获取客户端IP并获取IP信息
Mar 17 PHP
PHP安全上传图片的方法
Mar 21 PHP
Yii开启片段缓存的方法
Mar 28 PHP
PHP基于ORM方式操作MySQL数据库实例
Jun 21 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
Oct 15 PHP
PHP并发查询MySQL的实例代码
Aug 09 #PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
Aug 09 #PHP
PHP实现更改hosts文件的方法示例
Aug 08 #PHP
PHP编程实现阳历转换为阴历的方法实例
Aug 08 #PHP
PHP数据分析引擎计算余弦相似度算法示例
Aug 08 #PHP
Eclipse PHPEclipse 配置的具体步骤
Aug 08 #PHP
PHP 文件锁与进程锁的使用示例
Aug 07 #PHP
You might like
社区(php&amp;&amp;mysql)二
2006/10/09 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
js操作table示例(个人心得)
2013/11/29 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
js实现随机点名小功能
2017/08/17 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
详解Vue-cli代理解决跨域问题
2017/09/27 Javascript
Javascript实现异步编程的过程
2018/06/18 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
Python获取脚本所在目录的正确方法
2014/04/15 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
Python使用gRPC传输协议教程
2018/10/16 Python
python面试题Python2.x和Python3.x的区别
2019/05/28 Python
详解python调用cmd命令三种方法
2019/07/08 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
html5 学习简单的拾色器
2010/09/03 HTML / CSS
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
支票、地址标签、包装纸和慰问卡:Current Catalog
2018/01/30 全球购物
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
《散步》教学反思
2014/03/02 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书