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 调试利器debug_print_backtrace()
Jul 23 PHP
说说PHP的autoLoad自动加载机制
Sep 27 PHP
PHP漏洞全解(详细介绍)
Nov 13 PHP
php获取远程图片体积大小的实例
Nov 12 PHP
destoon整合ucenter后注册页面不跳转的解决方法
Jun 21 PHP
PHP自毁程序(慎用)
Jul 09 PHP
php导出生成word的方法
Dec 25 PHP
yii2实现根据时间搜索的方法
May 25 PHP
laravel自定义分页效果
Jul 23 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
Aug 11 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
Laravel下生成验证码的类
Nov 15 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
Yii调试查看执行SQL语句的方法
2016/07/15 PHP
laravel 自定义常量的两种方案
2019/10/14 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
JavaScript数据结构和算法之二叉树详解
2015/02/11 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
numpy排序与集合运算用法示例
2017/12/15 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
python实现字典嵌套列表取值
2019/12/16 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
Yahoo-PHP面试题1
2016/07/20 面试题
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
函授教育个人学习的自我评价
2013/12/31 职场文书
客户接待方案
2014/02/26 职场文书
农村婚礼主持词
2014/03/13 职场文书
资料员岗位职责范本
2015/04/13 职场文书
Elasticsearch 配置详解
2022/04/19 Java/Android