【问题标题】:How can I run multiple fsockopen() asynchronously如何异步运行多个 fsockopen()
【发布时间】:2016-03-01 04:42:07
【问题描述】:

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

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

【问题讨论】:

    标签: php email asynchronous fsockopen


    【解决方案1】:

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

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

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

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

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

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

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

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

    此类框架的非详尽列表:

    或者有什么方法可以异步执行多个php脚本?

    我认为你的意思是并行。

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

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

    【讨论】:

    • 感谢您的回答。由于服务器限制,我无法完成这个项目。大多数共享/虚拟服务器不允许运行 fsockopen() 和验证电子邮件 ID。根据他们的条款,该过程类似于垃圾邮件,因此不受支持。
    猜你喜欢
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多