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 相关文章推荐
基于mysql的论坛(2)
Oct 09 PHP
PHP 和 XML: 使用expat函数(一)
Oct 09 PHP
php adodb连接带密码access数据库实例,测试成功
May 14 PHP
php echo 输出字符串函数详解
May 13 PHP
php多层数组与对象的转换实例代码
Aug 05 PHP
php实现httpclient类示例
Apr 08 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 PHP
Yii配置文件用法详解
Dec 04 PHP
php使用mysqli向数据库添加数据的方法
Mar 20 PHP
php给每个段落添加空格的方法
Mar 20 PHP
php求数组全排列,元素所有组合的方法
May 05 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
Jun 08 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 mkdir()定义和用法
2009/01/14 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
2013/06/24 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
一段实时更新的时间代码
2006/07/07 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
如何编写高质量JS代码(续)
2015/02/25 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
2016/12/14 Python
Python 类的继承实例详解
2017/03/25 Python
Python科学画图代码分享
2017/11/29 Python
python实现微信小程序自动回复
2018/09/10 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
2019/08/12 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
毕业学生推荐信
2013/12/01 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书