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 相关文章推荐
从零开始 教你如何搭建Discuz!4.1论坛
Jul 07 PHP
PHP通用检测函数集合
Nov 25 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
Jun 03 PHP
php+ajax实现图片文件上传功能实例
Jun 17 PHP
php实现的mongodb操作类实例
Apr 03 PHP
Laravel 5框架学习之向视图传送数据
Apr 08 PHP
利用PHP判断是否是连乘数字串的方法示例
Jul 03 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
Sep 26 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
Mar 18 PHP
php数组遍历类与用法示例
May 24 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
Dec 03 PHP
PHP二维数组分页2种实现方法解析
Jul 09 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
后宫无数却洁身自好的男主,唐三只爱小舞
2020/03/02 国漫
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
基于php使用memcache存储session的详解
2013/06/25 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
js实现的倒计时按钮实例
2015/06/24 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
2017/09/28 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
基于vue展开收起动画的示例代码
2018/07/05 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
小程序实现投票进度条
2019/11/20 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
python Flask实现restful api service
2017/12/04 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
如何在python中实现随机选择
2019/11/02 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
中国制造网:Made-in-China.com
2019/10/25 全球购物
两年的个人工作自我评价
2014/01/10 职场文书
远程培训的心得体会
2014/09/01 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
用python批量解压带密码的压缩包
2021/05/31 Python
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js