无法使用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对象的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核线程调度示例一 ④ ( pthread_attr_init 初始化线程属性对象 | 完整代码示例 )
Linux 内核线程调度示例一 ④ ( pthread_attr_init 初始化线程属性对象 | 完整代码示例 )