无法使用pthreads访问线程类中的CI对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用pthreads访问线程类中的CI对象相关的知识,希望对你有一定的参考价值。

无法在线程类的run()函数中获取CI对象的实例使用模型。

线程启动正常,但无法调用模型功能请帮助!!!

class Clinical extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->helper('directory');
    }

    public function index()
    {
        error_reporting(E_ALL);
        ini_set('display_errors', TRUE);
        ini_set('display_startup_errors', TRUE);
        ini_set("max_execution_time", '0');
        ini_set('memory_limit', '1024M');
        $dirList = scandir('../clinicalTrial/');
        $data["dirList"] = $dirList;
        $this->load->view('clinical',$data);
    }

    public function import()
    {
        $folder = $_POST["folder_name"];
        $dir = directory_map('../clinicalTrial/'.$folder);
        $key = $folder;
        $myThreadObj = new ClinicalThread($dir,$key);
        var_dump($myThreadObj->start());
        echo "Import Done";
        exit;
    }
}

class ClinicalThread extends Thread
{
    public $dir = array();
    public $key = "";

    public function __construct($dir,$key)
    {
        $this->dir=$dir;
        $this->key=$key;
    }

    function run()
    {
        $CI = & get_instance();
        echo "";
        print_r($CI);
        exit;
        if(!empty($this->dir))
        {
            foreach($this->dir as $file)
            {
                $CI->ct->extract($this->key,$file);
            }
        }
    }
}
答案

你不能在线程内部调用框架的Model函数,因为它不会在线程内部加载框架引擎。

请在线程内部使用直接DB连接与数据库进行通信。

以上是关于无法使用pthreads访问线程类中的CI对象的主要内容,如果未能解决你的问题,请参考以下文章

互斥锁pthread_mutex_init()函数

Linux 内核线程调度示例一 ④ ( pthread_attr_init 初始化线程属性对象 | 完整代码示例 )

Linux 内核线程调度示例一 ④ ( pthread_attr_init 初始化线程属性对象 | 完整代码示例 )

C#:基类中的受保护方法;无法使用来自另一个类的派生类对象进行访问[重复]

使用pthread时,字节仍可访问

访问 linux 线程的本地堆栈(pthreads)