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 相关文章推荐
PHP中显示格式化的用户输入
Oct 09 PHP
php in_array 函数使用说明与in_array需要注意的地方说明
Apr 13 PHP
php文档更新介绍
Jul 22 PHP
Function eregi is deprecated (解决方法)
Jun 21 PHP
php float不四舍五入截取浮点型字符串方法总结
Oct 28 PHP
PHP函数eval()介绍和使用示例
Aug 20 PHP
php强制运行广告的方法
Dec 01 PHP
Zend Framework教程之Zend_Config_Xml用法分析
Mar 23 PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
Feb 15 PHP
thinkphp5.1框架模板赋值与变量输出示例
May 25 PHP
PHP中->和=>的意思
Mar 31 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
simplehtmldom Doc api帮助文档
2012/03/26 PHP
php处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
javascript 读取xml,写入xml 实现代码
2009/07/10 Javascript
Javascript 继承机制的实现
2009/08/12 Javascript
监控 url fragment变化的js代码
2010/04/19 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
python查询sqlite数据表的方法
2015/05/08 Python
Python中的ctime()方法使用教程
2015/05/22 Python
使用Python编写爬虫的基本模块及框架使用指南
2016/01/20 Python
Python 爬虫多线程详解及实例代码
2016/10/08 Python
python验证码识别的示例代码
2017/09/21 Python
Python面向对象之继承代码详解
2018/01/29 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
在dataframe两列日期相减并且得到具体的月数实例
2018/07/03 Python
python aiohttp的使用详解
2019/06/20 Python
python如何将多个PDF进行合并
2019/08/13 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
什么是serialVersionUID
2016/03/04 面试题
资深财务管理人员自我评价
2013/09/22 职场文书
实习求职信
2013/12/01 职场文书
爱国主义教育活动总结
2014/05/07 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
公司庆典主持词
2015/07/04 职场文书
canvas绘制折线路径动画实现
2021/05/12 Javascript
python中的random模块和相关函数详解
2022/04/22 Python