2010-08-27 65 views
0

任何人都可以描述如何在PHP编程中实现线程吗?我所知道的是,PHP不支持线程概念。不过,如果我错了,请纠正我。在PHP中执行线程处理

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

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

任何帮助,非常感谢。

+0

您能否准确指定您想要使用线程的目的。你想同时运行两个或更多PHP脚本来执行一个主要操作? – 2010-08-27 05:22:03

+0

@Maulik - 我没有任何这样的例子。我只是想用现实世界的例子来清理线程概念。请提供一些编程逻辑的例子。 – 2010-08-27 05:58:23

回答

2

线程是PHP的开发路线图,但在当前版本的PHP中是不可能的。没有线程产生函数,没有线程处理函数,没有线程同步函数等等。另外,大多数PHP插件/模块/库需要重写以安全地处理线程,因为它们不是用任何东西构建的,考虑到线程执行。

作为一个人为的例子......您正在PHP中执行数据导入脚本,并启动多个线程来解析数据块并将其插入到数据库中。 mysql_insert_id()会返回什么?由于在PHP中没有任何线程可以识别,所以您可能很好地从一个完全不同的线程中执行插入操作获取ID。

你当然可以使用PHP来fork()popen()proc_open()等..到了一个脚本的火多个副本,并运行这些并发,但是这只是多处理。每次都会有它自己的环境,内存,文件处理等..

+0

感谢您提供这样的信息答案。但是你也可以在PHP中强调一下关于线程安全模块的内容,因为这里有一些关于它们的提及,尽管对于那些假人来说并不完全清楚。再一次,谢谢。 – 2010-08-27 05:56:28

+0

大多数情况下它们都在那里,所以PHP可以在IIS下运行,这是一个多线程服务器。但是IIS下的PHP脚本仍然无法启动自己的线程 - 语言中根本没有任何东西允许它。 – 2010-08-27 10:14:24

0

5年以后...

你好
下面是关于如何在PHP中实现线程的例子:

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"; 

下面的链接,官方文档PHP_PTHREADS

希望帮助:)