在PHP中执行线程处理
任何人都可以描述如何在PHP编程中实现线程吗?我所知道的是,PHP不支持线程概念。不过,如果我错了,请纠正我。在PHP中执行线程处理
如果可能,请尝试提供一些关于PHP线程示例的细节。
如果可能的话,任何人都可以提供一些关于PHP模块的线程安全的细节吗?我知道这是市场上的一个热门话题,但没有像我这样的傻人可以理解的细节。
任何帮助,非常感谢。
线程是PHP的开发路线图,但在当前版本的PHP中是不可能的。没有线程产生函数,没有线程处理函数,没有线程同步函数等等。另外,大多数PHP插件/模块/库需要重写以安全地处理线程,因为它们不是用任何东西构建的,考虑到线程执行。
作为一个人为的例子......您正在PHP中执行数据导入脚本,并启动多个线程来解析数据块并将其插入到数据库中。 mysql_insert_id()
会返回什么?由于在PHP中没有任何线程可以识别,所以您可能很好地从一个完全不同的线程中执行插入操作获取ID。
你当然可以使用PHP来fork()
,popen()
,proc_open()
等..到了一个脚本的火多个副本,并运行这些并发,但是这只是多处理。每次都会有它自己的环境,内存,文件处理等..
感谢您提供这样的信息答案。但是你也可以在PHP中强调一下关于线程安全模块的内容,因为这里有一些关于它们的提及,尽管对于那些假人来说并不完全清楚。再一次,谢谢。 – 2010-08-27 05:56:28
大多数情况下它们都在那里,所以PHP可以在IIS下运行,这是一个多线程服务器。但是IIS下的PHP脚本仍然无法启动自己的线程 - 语言中根本没有任何东西允许它。 – 2010-08-27 10:14:24
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
希望帮助:)
您能否准确指定您想要使用线程的目的。你想同时运行两个或更多PHP脚本来执行一个主要操作? – 2010-08-27 05:22:03
@Maulik - 我没有任何这样的例子。我只是想用现实世界的例子来清理线程概念。请提供一些编程逻辑的例子。 – 2010-08-27 05:58:23