我在我的网络服务器上使用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";
?>
......问题是这个错误:致命错误:Class&#39; Thread&#39; 中找不到。 我是否必须包含一些 include_once 或类似的内容才能使其正常工作? 我该怎么办?
答案 0 :(得分:6)
您好我遇到了这个问题,并设法解决了这个问题。
首先,请考虑PHP的VC版本和VC版本的扩展。我在http://windows.php.net/downloads/pecl/releases/pthreads/附加了版本VC14的扩展名pthreads.dll
,但我的PHP VC版本是VC11。寻找较低版本以匹配PHP的VC版本。
第二次,也许你错过了PHP页面的第3步。它声明您需要将pthreadVC2.dll
复制到其他文件夹。这是完整的说明。
使用phpinfo()找出你的'PHP Extension Build'版本。您可以使用此功能 - http://localhost/?phpinfo=1
下载与您的php版本(32位或64位)和php扩展版本(当前使用的VC11)匹配的pthread。使用此链接进行下载 - http://windows.php.net/downloads/pecl/releases/pthreads/
提取拉链 - 将php_pthreads.dll移动到'bin \ php \ ext \'目录。 将pthreadVC2.dll移动到'bin \ php \'目录。 将pthreadVC2.dll移动到'bin \ apache \ bin'目录。 将pthreadVC2.dll移动到'C:\ windows \ system32'目录。
打开php \ php.ini并添加 延长= php_pthreads.dll
参考:https://secure.php.net/manual/en/pthreads.installation.php
答案 1 :(得分:5)
您的phpinfo显示您已禁用线程安全的php。你需要安装一个使用pthreads线程安全的php版本。这可能会或可能不会解决您当前的问题。
您可能还需要将pthreadsVC2.dll
复制到Web服务的bin目录中。
/etc/php55/fpm/
您正在寻找包含php.ini的文件夹。
确保php.ini文件中添加了以下行:
extension=php_pthreads.dll
答案 2 :(得分:2)
1)创建一个php文件
的phpinfo(); - &GT;运行
示例:信息
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 \ php 5.6 .31 \ ext \ - &gt; 复制php_pthreads.dll
wamp \ bin \ php \ php 5.6 .31 \ - &gt; 复制pthreadVC2.dll
wamp \ bin \ apache \ apache2.4.27 \ bin - &gt; 复制pthreadVC2.dll
4)现在编辑php.ini
wamp \ bin \ apache \ apache2.4.27 \ bin \ php.ini \ - &gt; 添加扩展名= php_pthreads.dll
wamp \ bin \ php \ php 5.6 .31 \ php.ini \ - &gt; 添加扩展名= php_pthreads.dll
5)现在重启Wamp
答案 3 :(得分:1)
我正在使用WAMP,发现 pthreadVC2.dll 应该转到Apache文件夹:
C:\瓦帕\ BIN \阿帕奇\ apache2.4.9 \ BIN
与README.md中的内容不同,您不需要将其放在PHP文件夹中,但 php_pthreads.dll 仍应该转到:
C:\瓦帕\ BIN \ PHP中\ php5.5.12 \分机
在此之后,搜索此文件:
C:\瓦帕\ BIN \阿帕奇\ apache2.4.9 \ BIN \ php.ini中
对于;extension=php_pgsql.dll
并在其后的新行中添加extension=php_pthreads.dll
(是的,它是Apache文件夹中的bin \ php.ini,而不是PHP文件夹中的bin \ php.ini)。
退出WAMP并再次启动它。您现在应该在 PHP&gt;下的WAMP菜单中看到PHP扩展,新的 php_pthreads 扩展名。
答案 4 :(得分:0)
我认为你需要在php.ini文件中包含扩展名,因为我无法在配置中看到它。您可以看到每个库都有自己的部分,如MySQL,但线程没有。我没有使用线程,但这应该是一个很好的起点。
答案 5 :(得分:0)
默认情况下,PHP中没有实现线程,根据你的phpinfo,它似乎没有被加载。查看有关如何设置/配置模块的PHP manual。