在PHP中实现线程化

时间:2010-08-27 05:16:15

标签: php multithreading thread-safety

有人可以描述一下如何在PHP编程中实现线程化吗?我所知道的是PHP不支持线程概念。但是,如果我错了,请纠正我。

如果可能,请尝试提供一些有关PHP线程的示例。

如果可能,有人还可以提供PHP模块的线程安全性的一些细节吗?我知道这在市场上是一个热门话题,但没有任何好的&像我这样的假人可以理解的细节。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

线程是PHP的开发路线图,但是当前版本的PHP无法实现。没有线程产生函数,没有线程处理函数,没有线程同步函数等等...同样,大多数PHP插件/模块/库都需要被重写以安全地处理线程,因为它们不是用任何东西构建的,而是单个 - 记住线程执行。

作为一个人为设计的例子......你正在用PHP做一个数据导入脚本并触发多个线程来解析数据块并将它们插入到数据库中。 mysql_insert_id()将返回什么?由于PHP中没有任何线程可识别,因此您可以从完全不同的线程中执行插入操作中获取ID。

你当然可以使用PHP来fork()popen()proc_open()等...来激活脚本的多个副本,并同时运行它们,但这只是多个处理。每个都有自己的环境,内存,文件句柄等......

答案 1 :(得分:0)

5年后......

你好 以下是如何在PHP中实现Thread的示例:

class Test extends Thread {
    public function run() {
        print "I'm running in new Thread, i will finish my job in 20 seconds";
        sleep(20);
    }
}

test = new Test();
test->start();
print "I'm the main thread and i don't have to wait 20 seconds";

此处是官方文档EclipseLink Forum

的链接

希望有所帮助:)