background image

 

PHP 教程:fsockopen 与 pfsockopen 的区别

按手册上说,这两个函数的唯一区别是,pfsockopen 是持续连接,而

fsockopen

不是. 

我写了个代码了一下: 
代码如下:
<?php 

$data

="1,0,721,73,1,0,0,43290000,0,60D81D509BC00451,3,FFFFFFFF";

$host

 = '127.0.0.1';

$url

 = "/aa.php";

$pffirst

 = false;

$times

 = 1000;

$startTime

 = microtime(true);

for

 (

$index

 = 0; 

$index

 < 

$times

$index

++) {

 echo

 httpPost(

$host

,

$url

,

$data

,

$pffirst

)."<hr><br />";

}

$middleTime

 = microtime(true);

for

 (

$index

 = 0; 

$index

 < 

$times

$index

++) {

 echo

 httpPost(

$host

,

$url

,

$data

,!

$pffirst

)."<hr><br />";;

}

$endTime

 = microtime(true);

 echo

 (

$pffirst

?"pfsocket":"fsocket").":".(

$middleTime

-

$startTime

);

 echo

 "<br />";

 echo

 (

$pffirst

?"fsocket":"pfsocket").":".(

$endTime

-

$middleTime

);

 

$count

=0;

//发包函数
function

 httpPost(

$host

,

$url

,

$data

,

$p

)

{

global

 

$count

;

 

$func

 = 

$p

?"pfsockopen":"fsockopen";

 

 

$conn

 = 

$func

(

$host

,80,

$errno

$errstr

, 30);

 

if

 (!

$conn

 

{

  echo

 "$errstr ($errno)<br />\n";

  

return

;

 

}

 

 

$header

 = "POST ".

$url

." HTTP/1.1\r\n";

 

$header

.= "Host : {$host}\r\n";

 

$header

.= "Content-type: application/x-www-form-urlencoded\r\n";