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 如何向 MySQL 发送数据
Oct 09 PHP
织梦模板标记简介
Mar 11 PHP
浅析Mysql 数据回滚错误的解决方法
Aug 05 PHP
php调用shell的方法
Nov 05 PHP
实例讲解yii2.0在php命令行中运行的步骤
Dec 01 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
Feb 15 PHP
PHP树-不需要递归的实现方法
Jun 21 PHP
PHP中Array相关函数简介
Jul 03 PHP
php实现的http请求封装示例
Nov 08 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
Mar 02 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 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中substr()函数参数说明及用法实例
2014/11/15 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
thinkPHP5项目中实现QQ第三方登录功能
2017/10/20 PHP
javascript中检测变量的类型的代码
2010/12/28 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
2016/09/01 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
javascript标准库(js的标准内置对象)总结
2018/05/26 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
[01:20:47]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第一场 1月19日
2021/03/11 DOTA
python 不关闭控制台的实现方法
2011/10/23 Python
Python根据区号生成手机号码的方法
2015/07/08 Python
详解Python 协程的详细用法使用和例子
2018/06/15 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
2019/01/26 Python
python实现诗歌游戏(类继承)
2019/02/26 Python
Python爬虫使用代理IP的实现
2019/10/27 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
python super()函数的基本使用
2020/09/10 Python
python实现代码审查自动回复消息
2021/02/01 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
办公文员的工作岗位职责
2013/11/12 职场文书
销售人员求职的自我评价分享
2014/03/15 职场文书
新闻发布会活动策划方案
2014/09/15 职场文书
委托函范文
2015/01/29 职场文书
2016教师节问候语
2015/11/10 职场文书
小学四年级作文之写景
2019/08/23 职场文书
python如何进行基准测试
2021/04/26 Python
Python中使用subprocess库创建附加进程
2021/05/11 Python