【问题标题】:Yii Framework Context in PHP Pthread ClassPHP Pthread 类中的 Yii 框架上下文
【发布时间】:2015-09-11 07:02:13
【问题描述】:

我正在处理PHP Pthreads。我写了一个继承“线程”类的类。此类不识别 Yii (1.x) 框架上下文。我不能使用任何 Yii 框架组件或模型。我已经确保线程类应该驻留在配置中“导入”中定义的 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.*',

    ),  

我做错了吗?

谢谢

阿尔芬

【问题讨论】:

  • 你能显示 configMultiThreaded 的路径吗?
  • @DanilaGanchar 我刚刚用导入数组更新了我的问题。 application.components.multithreaded-operations 是我的 Thread 类的路径。
  • 那么错误是什么?据我了解,当您创建 MultiThreaded 的新实例时,有什么问题吗? $test = new MultiThreaded();.
  • @Danila Ganchar 问题出在类 Yii 对象上下文中无法识别,而该类已被框架自动加载。
  • 你试过不同版本的 yii 吗??

标签: php yii php-pthread


【解决方案1】:

您需要在系统中安装 pthreads。

对于 Wampp (Windows)

  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. 解压 - 将 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) 下载梨 wgethttp://pear.php.net/go-pear.phar php go-pear.phar

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

pecl 安装 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

制作

sudo 安装

8) 更新 php.ini 添加 php.ini 扩展=pthreads.so include_path = “/usr/local/lib/php”

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

10) 测试线程类

php SimpleTest.php

这个Link会解释得更好。

希望对你有帮助:)

【讨论】:

  • 我在测试了基本的 phthread 脚本后发布了这个问题(因此系统中已经安装了 pthread)。正如我之前提到的,问题是关于带有 pthread 的 Yii 框架。谢谢:)。
  • @Arfeen :据我所知,与 Yii 无关。如果我们将它安装在我们的系统中,那么我们可以在任何框架中使用它。你试过用 \Thread 吗?
  • 我已经使用并测试了这些示例。他们正在使用框架。但问题是,框架上下文在 pthread 继承的类中被取消设置和破坏。我希望你明白我的意思。
  • @Arfeen 你在 yii 中解决了你的线程问题吗?我也遇到过同样的事情。如果您解决了这个问题,请在您自己的问题中发布答案。这将有助于其他开发人员。谢谢...
猜你喜欢
  • 2021-09-12
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多