我已经下载了PHP的Pthreads从dll文件http://windows.php.net/downloads/pecl/releases/pthreads/和php.ini文件中激活它,如下:
extension=pthreadVC2.dll
extension=php_pthreads.dll
我已经使用以下示例代码:
<?php
class AsyncOperation extends Thread
{
public function __construct($arg){
$this->arg = $arg;
}
public function run(){
if($this->arg){
printf("Hello %s\n", $this->arg);
}
}
}
$thread = new AsyncOperation("World");
if($thread->start())
$thread->join();
当我执行的代码,我收到以下错误:
致命错误:类 '线程' 用C未找到:\ htdocs中\线程\ AsyncOperation.php第2行调用堆栈:0.0008 333464 1. {主}()C:\ htdocs中\线程\ AsyncOperation.php:0
这里有两个问题:
1)首先要寻找的dll文件的位置正确。 dll文件应该放在如下:
C:\PHP5\pthreadVC2.dll
C:\PHP5\ext\php_pthreads.dll
在php.ini文件只php_pthreads.dll应该启用为
extension=php_pthreads.dll
2)必须寻找PHP和dll文件的版本。
我的PHP是使用VC6构建和dll文件是VC9。 这就是为什么模块没有得到安装。 我才知道,通过使用“PHP -m”这种差异。
由于存在DLL文件没有VC6的身材,我已经使用PHP和使用的并行线程的VC9构建和程序可以正常使用。
注:以上两种解决方案解决了我的问题。 但是,如果你仍然得到错误,请检查您是否已经启用了XDebug或Zend的调试器。 禁用它们,然后再试一次。
如果您已经安装在不同的文件夹,PHP,而不是C:/ PHP5,这是好事,pthreadVC2.dll到httpd.conf。 否则, 并行线程扩展模块无法找到它。
LoadFile "c:/not_default_php5/pthreadVC2.dll"
注:如果添加的LoadFile后,仍然阿帕奇无法找到DLL,只是删除的LoadFile线和复制DLL到Apache bin文件夹。
c:/apache_home/bin/pthreadVC2.dll
我发现一个解决方案是为我工作:
你应该先确认你已经下载了合适的包为您的特定的系统(PHP版本,64/32位系统)。
在这之后,你应该包括在多个地方的相关文件。 把它们放在因为否则它是不会工作描述的每一个地方,这是非常重要的。
以上(仅适用于php_pthreads.dll)所描述的你也应该改变你的php.ini文件。
我已经在Windows 7 64位系统上使用此与WAMP。