我正在开发一个使用这个php类来验证多个电子邮件ID的项目 - > php-smtp-email-validation。当我输入最多10个电子邮件ID时,代码工作正常,并且需要大约30-40秒来给出结果。但我想输入数千个电子邮件ID并同时检查它们,而不是逐个检查它们。由于单个php脚本中的fsockopen()将仅逐个执行,
所以,我在这里问我是否可以同时执行多个fsockopen()并更快地获得结果?或者有一种方法可以异步执行多个PHP脚本吗?
答案 0 :(得分:3)
所以,我在这里问我是否可以同时执行多个fsockopen()并更快地获得结果?
您正在寻找asynchronous, or non-blocking I/O:
在计算机科学中,异步I / O或非阻塞I / O是一种输入/输出处理形式,允许在传输完成之前继续进行其他处理。
处于非阻塞模式的流将提前返回而不是等待(阻止),允许您读取或写入另一个流,甚至执行其他任务,而等效的阻塞代码将迫使您等待。
fsockopen
能够返回合适的流,并且在TCP的情况下:您可以编写在PHP中执行异步I / O的代码,而无需任何框架或扩展的帮助。
如果您想自己编写代码,以下手册页将有所帮助:
各种扩展提供了比stream_select
更好的轮询机制。
建议您使用现有的许多框架之一来执行异步I / O.他们通常会选择最好的民意调查机制。其中一些尝试使用于编写同步,阻塞代码的人更容易实现。所有这些都经过了很好的测试,这使您可以继续完成手头的任务,而不必担心实现您想要使用的模式。
此类框架的非详尽清单:
或者有没有办法可以异步执行多个PHP脚本?
我认为你的意思是并行。
是的,有多种方法可以并行执行PHP代码,从执行相同脚本的多个实例(多处理),一直到使用多线程。
并行并发不适合这里的用例。