我如何 运行 异步多个 fsockopen()

How can I run multiple fsockopen() asynchronously

我正在开发一个项目,使用此 php class -> php-smtp-email-validation 验证多个电子邮件 ID。当我输入最多 10 个电子邮件 ID 时,代码工作正常,大约需要 30-40 秒才能给出结果。但我想输入数千个电子邮件 ID 并同时检查它们,而不是一个一个地检查它们。由于单个 php 脚本中的 fsockopen() 将仅一个接一个地执行,

所以,我来这里是想问一下我是否可以同时执行多个 fsockopen() 并更快地获得结果?或者有什么方法可以异步执行多个 php 脚本?

So, I am here to ask if somehow I can execute multiple fsockopen() simultaneously and get the results faster?

您正在寻找asynchronous, or non-blocking I/O

In computer science, asynchronous I/O, or non-blocking I/O is a form of input/output processing that permits other processing to continue before the transmission has finished.

非阻塞模式下的流将 return 提前而不是等待(阻塞),允许您读取或写入另一个流,甚至执行一些其他任务,而等效的阻塞代码将强制执行你等着。

fsockopen 能够 returning 合适的流,并且在 TCP 的情况下:您可以编写在 PHP 中执行异步 I/O 的代码,而无需任何框架或扩展的帮助。

如果您想自己编写代码,以下手册页会有所帮助:

各种扩展公开了比 stream_select 更好的轮询机制。

建议您使用现有的众多框架之一来执行异步 I/O。他们通常会选择可用的最佳轮询机制。其中一些尝试使习惯于编写同步、阻塞代码的人更容易实现。所有这些都经过了很好的测试,这使您可以继续手头的任务,而不必担心实现您想要使用的模式。

此类框架的非详尽列表:

Or is there a way I can execute multiple php scripts asynchronously?

我想你的意思是并行。

是的,有很多方法可以并行执行 PHP 代码,从执行同一脚本的多个实例(多处理),一直到使用多线程。

并行并发根本不适合这里的用例。