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


PHP pthreads: Fatal error: Class 'Thread' not found

我在网络服务器上使用 php5.5。现在我想使用线程。这是我的 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或类似的东西才能使其正常工作?我必须做什么??

嗨,

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

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

其次,也许您错过了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. 提取拉链 - 将php_pthreads.dll移动到 'bin''php''ext''' 目录。 将 pthreadVC2.dll 移动到 'bin''php''' 目录。 将 pthreadVC2.dll 移动到 'bin''apache''bin' 目录。 将 pthreadVC2.dll 移动到 'C:''windows''system32' 目录。

  4. 打开 php''php.ini 并添加 扩展名=php_pthreads.dll

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

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''apache''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'' --> 添加扩展名=php_pthreads.dll

5)现在重新启动Wamp

你的phpinfo显示你已经禁用了线程安全的php。您需要安装一个线程安全的 php 版本,以便使用 pthreads。不过,这可能会也可能不会解决您当前的问题。

您可能还需要将pthreadsVC2.dll复制到 Web 服务的 bin 目录中。

/etc/php55/fpm/

您正在寻找包含 php.ini 的文件夹。

确保 php.ini 文件添加了以下行:

extension=php_pthreads.dll

我正在使用WAMP,发现pthreadVC2.dll应该转到Apache文件夹:

C:''wamp''bin''apache''apache2.4.9''bin

与用 README.md 编写的内容不同,您不需要将其放在PHP文件夹中,但php_pthreads.dll仍应转到:

C:''wamp''bin''php''php5.5.12''ext

在此

之后,在此文件中搜索:

C:''wamp''bin''apache''apache2.4.9''bin''php.ini

对于;extension=php_pgsql.dll,并在它后面的新行中添加extension=php_pthreads.dll(是的,它是 Apache 文件夹中的 bin''php.ini,而不是 PHP 文件夹中的那个)。

退出 WAMP 并重新启动它。现在,您应该在 WAMP 菜单中的 PHP> PHP 扩展下看到新的 php_pthreads 扩展。

我认为您需要在 php.ini 文件中包含扩展名,因为我在配置中看不到它。您可以看到每个库都有自己的部分,例如MySQL,但是线程没有这样的部分。我从来没有使用过线程,但这应该是一个很好的起点。

默认情况下,线程不是在PHP中实现的,并且根据您的phpinfo,它似乎没有被加载。查看有关如何设置/配置模块的 PHP 手册。