使用单一连接编写多个帖子请求 – PHP
发布时间:2020-12-14 04:47:37 所属栏目:百科 来源:网络整理
导读:我正在使用以下代码段写入服务器. $fp = connect();$sent_requests = 0;function connect() { $addr = gethostbyname("example.com"); $fp = fsockopen("$addr",80,$errno,$errstr); socket_set_blocking( $fp,false ); if (!$fp) { echo "$errstr ($errno)b
我正在使用以下代码段写入服务器.
$fp = connect(); $sent_requests = 0; function connect() { $addr = gethostbyname("example.com"); $fp = fsockopen("$addr",80,$errno,$errstr); socket_set_blocking( $fp,false ); if (!$fp) { echo "$errstr ($errno)<br />n"; exit(1); } else{ echo "Connectedn"; return $fp; } } function sendTestCalls($load){ global $fp,$sent_requests; if(!$fp){ echo "reconnecting"; $sent_requests = 0; //echo stream_get_contents($fp) . "n"; fclose($fp); $fp = connect(); } $data = "POST /test HTTP/2.0rn"; $data.= "Host: example.comrn"; $data.= "Content-Type: application/jsonrn"; $data.= "Content-Length: ".strlen($load)."rn"; $data.= "Connection: Keep-Alivern"; $data.= "xYtU87BVFluc6: 1rn"; $data.= "rn" . $load; $bytesToWrite = strlen($data); $totalBytesWritten = 0; while ($totalBytesWritten < $bytesToWrite) { $bytes = fwrite($fp,substr($data,$totalBytesWritten)); $totalBytesWritten += $bytes; } $sent_requests++; } $time = time(); for($i=0; $i<1000; $i++) { sendTestCalls('{"justtesting": "somevalue"}'); } fclose($fp); $time_taken = time() - $time;//might be a bit inaccurate echo "Time Taken: " . $time_taken . "n"; 当我检查我的服务器上的访问日志时,收到的请求少于1000个(范围为0到900).我在这做错了什么? EDIT1 解决方法
尝试在每个请求之前插入此内容:
????$info = stream_get_meta_data($fp);????if($info [‘timed_out’]){????????FCLOSE($FP);????????$fp = connect();????} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |