PHP pthreads:致命错误:找不到类'Thread'

Its*_*Dom 15 php multithreading pthreads

我在我的网络服务器上使用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";

?>
Run Code Online (Sandbox Code Playgroud)

...问题是这个错误:致命错误:找不到类'Thread'.我是否必须包含一些include_once或类似的东西以使其工作?我需要做什么??

Pla*_*er1 7

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

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

其次,也许你错过了PHP页面的第3步.它声明您需要将其复制pthreadVC2.dll到不同的文件夹.这是完整的说明.

  1. 通过使用phpinfo()找出你的'PHP Extension Build'版本.你可以使用它 - http:// localhost /?phpinfo = 1

  2. 下载与您的php版本(32位或64位)和php扩展版本(当前使用的VC11)匹配的pthread.使用此链接进行下载 - 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


Mur*_*mak 6

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

2) 访问网站:
http : //windows.php.net/downloads/pecl/releases/pthreads/
Example 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\php 5.6 .31\ext\ -->复制 php_pthreads.dll
wamp\bin\php\php 5.6 .31\ -->复制 pthreadVC2.dll
wamp\bin\apache\apache2.4.27\bin - ->复制 pthreadVC2.dll

4)现在编辑 php.ini
wamp\bin\apache\apache2.4.27\bin\ php.ini \ -->添加 extension=php_pthreads.dll
wamp\bin\php\php 5.6 .31\ php.ini \ -->添加 extension=php_pthreads.dll

5) 现在重启 Wamp


Kyo*_*eko 5

您的phpinfo显示您已禁用线程安全的PHP.你需要安装一个使用pthreads线程安全的php版本.这可能会或可能不会解决您当前的问题.

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

/etc/php55/fpm/
Run Code Online (Sandbox Code Playgroud)

你正在寻找带有php.ini的文件夹.

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

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


小智 0

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