php 阻塞函数吗,PHPfsockopen函数问题,本脚本无阻塞触发其他脚本失败

$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了,不成功的概率很高。 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值