zoukankan      html  css  js  c++  java
  • PHP fsockopen 异步写入文件

    b.php


    <?php $url = 'http://fsc.com/a.php'; $param = array( 'name'=>'fdipzone', 'gender'=>'male', 'age'=>30 ); doRequest($url, $param); echo "立马输出"; function doRequest($url, $param=array()){ $urlinfo = parse_url($url); $host = $urlinfo['host']; $path = $urlinfo['path']; $query = isset($param)? http_build_query($param) : ''; $port = 80; $errno = 0; $errstr = ''; $timeout = 10; $fp = fsockopen($host, $port, $errno, $errstr, $timeout); stream_set_blocking($fp,true);//开启了手册上说的非阻塞模式 stream_set_timeout($fp,1);//设置超时 $out = "POST ".$path." HTTP/1.1 "; $out .= "host:".$host." "; $out .= "content-length:".strlen($query)." "; $out .= "content-type:application/x-www-form-urlencoded "; $out .= "connection:close "; $out .= $query; fputs($fp, $out); fclose($fp); /* //需要显示返回的信息,就用这个 fwrite($fp, $out); $content = ''; while (!feof($fp)) { $content .= fgets($fp); } fclose($fp); echo $content;//处理返回的信息 */ }

    a.php

    <?php
    // 当执行过程中,客户端连接断开或连接超时,都会有可能造成执行不完整,因此需要加上
    ignore_user_abort(true); // 忽略客户端断开 此处的代码需要php.ini开启相关的选项
    set_time_limit(0);    // 设置执行不超时
    $data = $_GET;
    if(empty($data)){
        $data = $_POST;
    }
    
    $data['cont']= '延迟10秒写入,有上面的ignore函数在,网页客户端关闭网页,也可以照样执行';
    $str = json_encode($data,JSON_UNESCAPED_UNICODE);
    sleep(10);//模拟耗时任务
    file_put_contents('./1.txt',$str);

    打开上面的b.php   ,过10秒以后,a页面将接收到的东西写到1.txt里面,

    打开b.php后,关闭页面也会执行异步写入操作,不会断开

  • 相关阅读:
    Kubernetes 集成研发笔记
    Rust 1.44.0 发布
    Rust 1.43.0 发布
    PAT 甲级 1108 Finding Average (20分)
    PAT 甲级 1107 Social Clusters (30分)(并查集)
    PAT 甲级 1106 Lowest Price in Supply Chain (25分) (bfs)
    PAT 甲级 1105 Spiral Matrix (25分)(螺旋矩阵,简单模拟)
    PAT 甲级 1104 Sum of Number Segments (20分)(有坑,int *int 可能会溢出)
    java 多线程 26 : 线程池
    OpenCV_Python —— (4)形态学操作
  • 原文地址:https://www.cnblogs.com/yszr/p/11393944.html
Copyright © 2011-2022 走看看