pthread不在php中工作

Cin*_*lla 4 php installation multithreading

我从http://windows.php.net/downloads/pecl/releases/pthreads/下载了PHP Pthreads dll文件,并在php.ini中启用它,如下所示:

extension=pthreadVC2.dll
extension=php_pthreads.dll
Run Code Online (Sandbox Code Playgroud)

我使用了以下示例代码:

<?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();
Run Code Online (Sandbox Code Playgroud)

当我执行代码时,我收到以下错误:

致命错误:在第2行的C:\ htdocs\threads\AsyncOperation.php中找不到类'Thread'调用堆栈:0.0008 333464 1. {main}()C:\ htdocs\threads\AsyncOperation.php:0

Cin*_*lla 12

这里有两个问题:

1)首先必须正确查找dll文件位置.dll文件应放置如下:

C:\PHP5\pthreadVC2.dll
C:\PHP5\ext\php_pthreads.dll
Run Code Online (Sandbox Code Playgroud)

并且在php.ini文件中,只应启用php_pthreads.dll作为

extension=php_pthreads.dll
Run Code Online (Sandbox Code Playgroud)

2)必须查找PHP和DLL文件的版本.

我的PHP是VC6 build,使用的dll文件是VC9.这就是为什么模块没有安装.我通过使用" php -m " 来了解这种差异.

由于没有VC6构建的dll文件,我使用了VC9构建的PHP并使用了pthreads,程序运行正常.

注意:以上两种解决方案解决了我的问题.但是,如果您仍然遇到错误,请检查您是否启用了调试器xdebug或zend.禁用它们并重试.

  • +1解决问题后不放弃问题:). (3认同)