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 相关文章推荐
使用MaxMind 根据IP地址对访问者定位
Oct 09 PHP
PHP在字符断点处截断文字的实现代码
Apr 21 PHP
php检测网页是否被百度收录的函数代码
Oct 09 PHP
php socket实现的聊天室代码分享
Aug 16 PHP
PHP动态编译出现Cannot find autoconf的解决方法
Nov 05 PHP
PHP中的Streams详细介绍
Nov 12 PHP
Zend Framework教程之资源(Resources)用法实例详解
Mar 14 PHP
PHP 微信扫码支付源代码(推荐)
Nov 03 PHP
PHP的消息通信机制测试实例
Nov 10 PHP
Laravel程序架构设计思路之使用动作类
Jun 07 PHP
thinkphp5.1框架模板布局与模板继承用法分析
Jul 19 PHP
php的lavarel框架中join和orWhere的用法
Dec 28 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设计模式 Singleton(单例模式)
2011/06/26 PHP
str_replace只替换一次字符串的方法
2013/04/09 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
jquery HotKeys轻松搞定键盘事件代码
2008/08/30 Javascript
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
js代码实现点击按钮出现60秒倒计时
2021/01/28 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
Python中的exec、eval使用实例
2014/09/23 Python
Python编写屏幕截图程序方法
2015/02/18 Python
Python进阶-函数默认参数(详解)
2017/05/18 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
基于python实现从尾到头打印链表
2019/11/02 Python
python实现低通滤波器代码
2020/02/26 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
Python实现异步IO的示例
2020/11/05 Python
python制作抽奖程序代码详解
2021/01/15 Python
简历自我评价怎么写好呢?
2014/01/04 职场文书
查环查孕证明
2014/01/10 职场文书
旷课检讨书1000字
2014/02/14 职场文书
委托书的格式
2014/08/01 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书