PHP 并发获取(stream_select)信息程序代码_PHP教程
array
php
select
stream
url
程式碼
資訊
並行
程式
獲取
- $url = "www.ite5e.com";
- if(array_key_exists(url,$_GET)){
- $url = $_GET[url];
- }
- $hosts = array("www.xunlei.com", "www.qq.com", "www.163.com","www.baidu.com","www.kaixin.com","vip.xunlei.com");
- #$hosts = array($url);
- $timeout = 5;
- $status = array();
- $retdata = array();
- $sockets = array();
- $e = array();
- /* Initiate connections to all the hosts simultaneously */
- foreach ($hosts as $id => $host) {
- $errno = 0;
- $errstr = "";
- $s = stream_socket_client("$host:80", $errno, $errstr, $timeout,STREAM_CLIENT_ASYNC_CONNECT|STREAM_CLIENT_CONNECT);
- if ($s) {
- $sockets[$id] = $s;
- $status[$id] = "in progress";
- } else {
- $status[$id] = "failed, $errno $errstr";
- }
- $retdata[$id] = ;
- }
- /* Now, wait for the results to come back in */
- while (count($sockets)) {
- $read = $write = $sockets;
- /* This is the magic function - explained below */
- $n = stream_select($read, $write, $e, $timeout);
- if ($n > 0) {
- /* readable sockets either have data for us, or are failed connection attempts */
- foreach ($read as $r) {
- $id = array_search($r, $sockets);
- $data = fread($r, 8192);
- if (strlen($data) == 0) {
- if ($status[$id] == "in progress") {
- $status[$id] = "failed to connect";
- }
- fclose($r);
- unset($sockets[$id]);
- } else {
- $retdata[$id] .= $data;
- }
- }
- /* writeable sockets can accept an HTTP request */
- foreach ($write as $w) {
- if(!is_resource($w))continue;
- $id = array_search($w, $sockets);
- fwrite($w, "GET / HTTP/1.0 Host: ".$hosts[$id]." ");
- $status[$id] = "waiting for response";
- }
- } else {
- /* timed out waiting; assume that all hosts associated
- * with $sockets are faulty */
- foreach ($sockets as $id => $s) {
- $status[$id] = "timed out " . $status[$id];
- }
- break;
- }
- }
- foreach ($hosts as $id => $host) {
- #echo "Host: $host ";
- #echo "Status: " . $status[$id] . " ";
- #echo "Retdata: " . $retdata[$id] . " ";
- $strs = explode(" ",$retdata[$id],2);
- echo isset($strs[1])?$strs[1]:$retdata[$id];
- }
- function debug($i){
- var_dump($i);
- var_dump(gettype($i));
- var_dump(is_resource($i));
- }
- ?>
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前
By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保護它?
3 週前
By DDD

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發
