PHP pthreads: 致命错误: 找不到类“线程”

2022-08-31 01:02:02

我在我的网络服务器上使用php5.5。现在我想使用 pthreads。这是我的php配置:http://dd19010.kasserver.com/infophp.php55

实现此代码后.....

 <?php

class AsyncOperation extends Thread
{
    public function __construct($threadId)
    {
        $this->threadId = $threadId;
    }

    public function run()
    {
        printf("T %s: Sleeping 3sec\n", $this->threadId);
        sleep(3);
        printf("T %s: Hello World\n", $this->threadId);
    }
}

$start = microtime(true);
for ($i = 1; $i <= 5; $i++) {
    $t[$i] = new AsyncOperation($i);
    $t[$i]->start();
}
echo microtime(true) - $start . "\n";
echo "end\n";

?>

...问题是这个非常错误:致命错误:类“线程”在中找不到。我是否必须包含一些include_once或类似的东西才能使其正常工作?我该怎么办??


答案 1

嗨,我遇到了这个问题,并设法解决了它。

首先,考虑 PHP 的 VC 版本和扩展的 VC 版本。在我的扩展中,我用 http://windows.php.net/downloads/pecl/releases/pthreads/ 的VC14版本附加了扩展但我的PHP VC版本是VC11。寻找与 PHP 的 VC 版本匹配的较低版本。pthreads.dll

其次,也许你错过了PHP页面上的步骤#3。它指出您需要将 复制到其他文件夹。这是完整的说明。pthreadVC2.dll

  1. 通过使用phpinfo()找出你的“PHP扩展构建”版本是什么。您可以使用这个 - http://localhost/?phpinfo=1

  2. 下载与您的 php 版本(32 位或 64 位)和 php 扩展版本(当前使用的 VC11)匹配的 pthreads。使用此链接进行下载 - http://windows.php.net/downloads/pecl/releases/pthreads/

  3. 解压缩 zip - 将php_pthreads.dll移动到“bin\php\ext\”目录。将 pthreadVC2.dll 移动到 'bin\php\' 目录。将 pthreadVC2.dll 移动到 'bin\apache\bin' 目录。将 pthreadVC2.dll移动到 “C:\windows\system32” 目录。

  4. 打开 php\php.ini并添加 extension=php_pthreads.dll

参考资料: https://secure.php.net/manual/en/pthreads.installation.php


答案 2

1) 创建一个 php 文件
phpinfo();--> 运行
示例: 信息
PHP 版本: 5.6.31
编译器: MSVC11 (Visual C++ 2012)
体系结构: x64

2)转到网站:
http://windows.php.net/downloads/pecl/releases/pthreads/
示例 2.0.9 文件
编译器:VC11
体系结构:x64
php_pthreads-2.0.9-5.6-ts-vc11-x64.zip下载。

3)提取php_pthreads.dll和pthreadVC2.dll。
wamp\bin\php\php5.6.31\ext\ --> copy php_pthreads.dll
wamp\bin\php\php5.6.31\ --> copy pthreadVC2.dll
wamp\bin\apache2.4.27\bin --> copy pthreadVC2.dll

4)现在编辑 php.ini
wamp\bin\apache\apache2.4.27\bin\php.ini\ --> Add extension=php_pthreads.dll
wamp\bin\php\php5.6.31\php.ini\ --> Add extension=php_pthreads.dll

5)现在重新启动 Wamp


推荐