首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以"que“fsockopen吗?多个TCP套接字

可以"que“fsockopen吗?多个TCP套接字
EN

Stack Overflow用户
提问于 2013-05-19 19:08:57
回答 3查看 873关注 0票数 0

我有一个脚本,它当前通过fsockopen()在每个循环中创建一个TCP套接字。每次打开连接时,整个PHP脚本都会暂停,直到建立连接为止。

我想沿着同时运行5个套接字的路径走下去,这样我就可以加快脚本的速度。

有什么方法可以让我“排队”一个fsockopen连接吗?理想情况下,它应该看起来像这样的伪代码。

$opensocketcount = 0;

代码语言:javascript
复制
while (1) {

    if($opensocketcount < 5) {
        for($i=1;$i<6;$i++) {
            $sockets[$i] = fsockopen("127.0.0.1",80);
            $opensocketcount++;
        }
    }

    //Check to see if socket connection has been established
    for($i=1;$i<6;$i++) {
        if ( has_socket_been_established($sockets[$i]) ) {
            //Post the data.
            $opensocketcount -= 1;
            socket_close($sockets[$i]);
            $sockets[$i] = null;
        }
    }

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-19 19:14:57

PHP不是异步的。有一些方法可以使用shell脚本或CURL来实现多线程PHP,但所有这些都不是完美的解决方案。

如果你在前端使用它,你可以使用AJAX,因为这是异步的,像这样调用脚本"socket.php?con=1“等。在PHP脚本中,你会有一个包含所有IP的数组,并通过GET值连接到它们。然而,只有当你在前台有这个的时候,这才能起作用。对于后端方法,你必须使用像NODE.JS这样的东西

票数 2
EN

Stack Overflow用户

发布于 2013-05-19 20:27:05

React可以帮你做到这一点--请务必查看examples

安东尼。

票数 0
EN

Stack Overflow用户

发布于 2013-06-13 01:12:29

因为PHP一次只做一件事,所以对于类似的任务( using ),我创建了一个批处理脚本,它使用参数调用多个php作业。

所以循环在批处理文件中。这还会将负载分布在多个CPU上,因为作业是分散的。该批处理从每行有10个项目的CVS文件读取信息进行扫描(以同时运行10个进程)。

它在windows服务器上运行,但同样可以应用于任何。

以下是我的批处理文件的内容作为示例:

@Echo Off For /F "usebackq tokens=1-10 delims=,“%%a in ("D:\php_run\all_locations_10.cvs") Do (

回声扫描:%%a

开始“扫描%%a”"C:\Program Files (x86)\PHP\v5.3\php.exe“"-f”"D:\php_run\wkstn_scan.php“"%%a”

回显扫描:%%b开始“扫描%%b”"C:\Program Files (x86)\PHP\v5.3\php.exe“"-f”"D:\php_run\wkstn_scan.php“"%%b”

回声扫描:%%c

开始“扫描%%c”"C:\Program Files (x86)\PHP\v5.3\php.exe“"-f”"D:\php_run\wkstn_scan.php“"%%c”

回声扫描:%%d

开始“扫描%%d”"C:\Program Files (x86)\PHP\v5.3\php.exe“"-f”"D:\php_run\wkstn_scan.php“"%%d”

回声扫描:%%e

开始“扫描%%e”"C:\Program Files (x86)\PHP\v5.3\php.exe“"-f”"D:\php_run\wkstn_scan.php“"%%e”

回声扫描:%%f

开始“扫描%%f”"C:\Program Files (x86)\PHP\v5.3\php.exe“"-f”"D:\php_run\wkstn_scan.php“"%%f”

回声扫描:%%g

开始“扫描%%g”"C:\Program Files (x86)\PHP\v5.3\php.exe“"-f”"D:\php_run\wkstn_scan.php“"%%g”

回声扫描:%%h

开始“扫描%%h”"C:\Program Files (x86)\PHP\v5.3\php.exe“"-f”"D:\php_run\wkstn_scan.php“"%%h”

回声扫描:%%i

开始“扫描%%i”"C:\Program Files (x86)\PHP\v5.3\php.exe“"-f”"D:\php_run\wkstn_scan.php“"%%i”

回声扫描:%%j

开始扫描%%j“"C:\Program Files (X86) /WAIT”"-f“"D:\php_run\wkstn_scan.php”"%%j“

)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16633988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档