如何异步运行多个fsockopen()

时间:2015-11-27 02:46:28

标签: php email asynchronous fsockopen

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

所以,我在这里问我是否可以同时执行多个fsockopen()并更快地获得结果?或者有一种方法可以异步执行多个PHP脚本吗?

1 个答案:

答案 0 :(得分:3)

  

所以,我在这里问我是否可以同时执行多个fsockopen()并更快地获得结果?

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

  

在计算机科学中,异步I / O或非阻塞I / O是一种输入/输出处理形式,允许在传输完成之前继续进行其他处理。

处于非阻塞模式的流将提前返回而不是等待(阻止),允许您读取或写入另一个流,甚至执行其他任务,而等效的阻塞代码将迫使您等待。

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

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

各种扩展提供了比stream_select更好的轮询机制。

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

此类框架的非详尽清单:

  

或者有没有办法可以异步执行多个PHP脚本?

我认为你的意思是并行。

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

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

相关问题