• 技术文章 >后端开发 >php教程

    PHP fsockopen函数问题,本脚本无阻塞触发其他脚本失败

    2016-06-06 20:15:33原创310
        $host = 'www.abc.com';
        $port = 80;
        $query = "admin/mi.php?key=value";
        
        $fp = @fsockopen($host, $port, $errno, $errstr, 30);
        if ($fp) {
            $out = "GET /".$query." HTTP/1.1\r\n";
            $out .= "Host: ".$host."\r\n";
            $out .= "Connection: Close\r\n\r\n";
            // 0,资源流将会被转换为非阻塞模式;1,资源流将会被转换为阻塞模式。
            @stream_set_blocking($fp, 0);
            @stream_set_timeout($fp, 5);
            fwrite($fp, $out);
            // sleep(1); //关键地方
            fclose($fp);
        } else {
            echo "$errstr ($errno)
    \n"; } ------------- 看关键地方 有SLEEP(1) 请求 www.abc.com 成功,没有 SLEEP(1)请求不成功,FSOCKOPEN运作机制是什么呢? 我想在这个脚本里无阻塞访问www.abc.com/admin/mi.php 不需要返回数据。只是需要触发MI.PHP执行。

    回复内容:

        $host = 'www.abc.com';
        $port = 80;
        $query = "admin/mi.php?key=value";
        
        $fp = @fsockopen($host, $port, $errno, $errstr, 30);
        if ($fp) {
            $out = "GET /".$query." HTTP/1.1\r\n";
            $out .= "Host: ".$host."\r\n";
            $out .= "Connection: Close\r\n\r\n";
            // 0,资源流将会被转换为非阻塞模式;1,资源流将会被转换为阻塞模式。
            @stream_set_blocking($fp, 0);
            @stream_set_timeout($fp, 5);
            fwrite($fp, $out);
            // sleep(1); //关键地方
            fclose($fp);
        } else {
            echo "$errstr ($errno)
    \n"; } ------------- 看关键地方 有SLEEP(1) 请求 www.abc.com 成功,没有 SLEEP(1)请求不成功,FSOCKOPEN运作机制是什么呢? 我想在这个脚本里无阻塞访问www.abc.com/admin/mi.php 不需要返回数据。只是需要触发MI.PHP执行。

    关键地方加上 usleep(1000); 【延时1000微秒 = 1毫秒 = 0.001秒】 就可以了。目前稳定。

    --- 云网开

    $fp被你close了。无阻塞不代表能保证数据发完,发送数据过程其实是挺漫长的,要域名解析,要建立链接,还没等事情做完,你就close了,不成功的概率很高。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php
    上一篇:PHP处理大量数据的问题 下一篇:一个关于wp-cli的报错
    PHP编程就业班

    相关文章推荐

    • 归纳整理39道PHP面试题(总结分享)• php模式设计之 注册树模式,php模式设计_PHP教程• PHP Reflection API详解_PHP教程• 数组函数总结,数组函数_PHP教程• php常见的页面跳转方法汇总_PHP教程

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网