【问题标题】:A way to check ports with PHP (Multithreading?)一种使用 PHP 检查端口的方法(多线程?)
【发布时间】:2012-04-23 09:19:20
【问题描述】:

我目前正在使用 cURL multi 在几秒钟内检查数千个 http 状态代码,效果很好。
但是,我想知道 - 他们是否可以使用 cURL 或其他 PHP 多任务方法检查端口是否正在响应(例如 mysql)?

【问题讨论】:

  • 简短回答:否。使用支持多线程的语言。或者像 Node.js 这样的异步
  • 问题是使用fsockopen是同步的;连接后,您可以将套接字设置为非阻塞并使用stream_select 多路复用连接,但您会失去连接所花费的时间。除此之外,您仍然需要代码来处理来自该端口的响应(例如 mysql)

标签: php multithreading curl multiprocessing fsockopen


【解决方案1】:

简短的回答:

PHP 中没有线程。

不过,您可以查看pcntl 扩展名。它与线程无关,它是 fork(这意味着将为每个 fork 创建一个进程)。

几年前开发了一个Thread extension,但现在已经有2年没有更新了。

分叉非常有价值,可以在您的用例中使用,但它不容易维护或编写。 根据您的需要,您可能更希望使用 python 或 perl,它们都具有更好的线程支持。

【讨论】:

    【解决方案2】:

    您可以使用fsockopen() 来扫描端口,但每个 PHP 脚本都在 1 个线程上运行。

    http://php.net/manual/en/function.fsockopen.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多