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 相关文章推荐
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
Nov 18 PHP
How do I change MySQL timezone?
Mar 26 PHP
php模拟socket一次连接,多次发送数据的实现代码
Jul 26 PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
Jun 30 PHP
PHP has encountered a Stack overflow问题解决方法
Nov 03 PHP
PHP对文件夹递归执行chmod命令的方法
Jun 19 PHP
PHP使用mkdir创建多级目录的方法
Dec 22 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
Mar 17 PHP
PHP获取客户端及服务器端IP的封装类
Jul 21 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
Aug 12 PHP
thinkphp5框架API token身份验证功能示例
May 21 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
1 Tube Radio
2021/03/02 无线电
精致的人儿就要挑杯子喝咖啡
2021/03/03 冲泡冲煮
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
php根据生日计算年龄的方法
2015/07/13 PHP
PHP入门教程之PHP操作MySQL的方法分析
2016/09/11 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
PHP工厂模式的日常使用
2019/03/20 PHP
基于JQuery模仿苹果桌面的Dock效果(初级版)
2012/10/15 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
js图片上传的封装代码
2017/08/01 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
深入浅析python继承问题
2016/05/29 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
ktv收银员岗位职责
2013/12/16 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
大学生助学金感谢信
2015/01/21 职场文书
回复函范文
2015/07/14 职场文书
被委托人身份证明
2015/08/07 职场文书
Nginx实现会话保持的两种方式
2022/03/18 Servers
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS