【问题标题】:parallelize php script for drupal为drupal并行化php脚本
【发布时间】:2014-10-13 01:47:58
【问题描述】:

我正在开发一个 Drupal 模块,在这些模块中我需要执行 5 次相同的代码部分,所以,我认为我可以并行执行以提高执行速度,但我不想要使用pcntl_fork,我想使用pthread。 现在的问题是:用于 php 的 pthread 库与 c 中的库相同吗? 我可以在 php 中实现内核级线程吗? 因为我认为如果 php pthread 是用户级别的,我在我的情况下使用它没有任何优势 感谢回复

【问题讨论】:

    标签: php drupal-7 parallel-processing pthreads


    【解决方案1】:

    首先,一些事实:

    pthreads API 促进多线程 用户领域:它不会创建绿色或用户线程。

    绿色线程被实现为一种协作式或抢占式多任务处理语言,其虚拟机或环境尚未为真正的多线程执行做好充分准备。

    PHP 为多线程执行做好了准备,它确实有适当的线程模型,因此不需要绿色线程。

    PHP中的pthreads不是绿色线程,它们是用Posix Threads实现的,它们是内核线程

    http://en.wikipedia.org/wiki/Green_threads

    http://en.wikipedia.org/wiki/Kernel_thread

    手头的问题

    我假设您打算让这些线程由前端(即在客户端请求的网络服务器中)执行。

    我恳求你不要这样做;基本数学禁止执行模型中的请求导致 X 线程被调度而无法扩展。

    如果您的应用程序的一部分需要线程提供的功能,则将应用程序的该部分与前端(Web 服务器)分离,将其完全隔离,将其作为系统服务执行,通过某种合理的 RPC 形式与您的前端通信。

    【讨论】:

    • 好的,现在我明白了 pthreads 在 php 中的作用,非常感谢!现在我以更好的方式解释我对 pthreads 所做的事情,我有一个页面,里面有 5 个选择,对于每个选择,我必须从 Active Directory 中获取一些值,每个查询的结果很多,所以我想运行并行构建每个选择的部分。当客户端向 Web 服务器请求页面时,启动并行部分所在的脚本,然后我必须删除它或使用 RPC 管理它。正确的?感谢您的回复!
    • 但是我明白你想说什么,在这种情况下实现线程的最佳实践是将线程部分与 Web 服务器分开。再次感谢
    猜你喜欢
    • 2013-04-26
    • 2011-09-29
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多