Yii框架中的PHP Pthread类上下文

4
我正在研究PHP Pthreads。我编写了一个继承“Thread”类的类。这个类无法识别Yii(1.x)框架上下文。我不能使用任何Yii框架组件或模型。我确保线程类应该驻留在配置中“import”定义的Yii框架的可访问路径中。
以下是我编写线程类的示例。
  <?php

    class MultiThreaded extends Thread {


            public function __construct(){

            }

            public function run(){
                       echo Yii::app()->basePath;
            }


    }

更新:
这是Yii配置文件中的导入器数组。
'import'=>array(
        'application.models.*',
        'application.components.*',
        'application.components.multithreaded-operations.*',
        'application.components.google_api_Lib.src.*',
        'application.controllers.*',
        'application.extensions.yii-mail.*',
        'application.extensions.*',
        'application.commands.*',

    ),  

我做错了什么吗?

谢谢

Arfeen


你能展示一下 configMultiThreaded 的路径吗? - Danila Ganchar
@DanilaGanchar,我刚刚更新了我的问题,并导入了数组。application.components.multithreaded-operations是我的Thread类的路径。 - Arfeen
那么出了什么错误?据我所知,当您创建 MultiThreaded 的新实例时出现了问题?$test = new MultiThreaded();. - Danila Ganchar
@Danila Ganchar,问题在于 Yii 对象上下文无法被识别,而这个类已经被框架自动加载了。 - Arfeen
你尝试过使用不同版本的Yii吗? - Ravi Hirani
1个回答

0

您需要在系统中安装pthreads。

对于Wampp(Windows)

  1. 通过使用phpinfo()查找“PHP Extension Build”版本。您可以使用此链接- 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

现在重新启动服务器,完成。

对于LINUX系统:

1) 下载 PHP 源代码并解压 PHP

2) 下载 PEAR wget http://pear.php.net/go-pear.phar php go-pear.phar

3) 下载 pthreads 获取 PECL 扩展(PECL 是 PHP 扩展的存储库)

pecl install pthread-0.4.4

4) 解压 pthreads 将 pthread-0.4.4 复制到 php/ext 目录下 (对于 ./configure,允许添加选项 --enable-pthreads)

mv build/php-src-master/ext/pthreads-master build/php-src-master/ext/pthreads

5) 重新配置源代码

./buildconf --force

./configure --help | grep pthreads

如果您没有看到相应的 --enable-pthreads 选项,则需要执行以下操作:

rm -rf aclocal.m4

rm -rf autom4te.cache/

./buildconf --force

6) 构建 PHP 编译 PHP 源代码 添加:

./configure --enable-debug --enable-maintainer-zts --enable-pthreads

7) 安装 PHP

make

sudo make install

8) 更新 php.ini 在 php.ini 中添加以下内容: extension=pthreads.so Include_path = “/usr/local/lib/php”

9) 检查模块 php -m (检查 pthread 是否已加载)

10) 测试线程类

php SimpleTest.php

这个链接会更好地解释。

希望这能帮到你 :)


我在测试基本的phthread脚本后发布了这个问题(因此pthread已经安装在系统中)。正如我之前提到的,这个问题涉及到Yii框架和pthread。谢谢 :)。 - Arfeen
@Arfeen:据我所知,这与Yii无关。如果我们在系统中安装它,那么我们可以在任何框架中使用它。你尝试过\Thread了吗? - Ravi Hirani
我已经使用并测试了那些示例。它们在没有框架的情况下工作。但问题是,在pthread继承类中,框架上下文会被取消设置和销毁。我希望你明白我的意思。 - Arfeen
@Arfeen,你在 Yii 中解决了线程问题吗?我也遇到了同样的问题。如果你已经解决了这个问题,能否请在你自己的问题中发布答案。这将有助于其他开发人员。谢谢... - Developer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接